C语言中常见的字符串处理函数

来源:互联网 发布:服务器开启80端口 编辑:程序博客网 时间:2024/05/21 12:47

C语言中常见的字符串处理函数

C语言中提供了大量丰富的字符串处理函数,大致可以分为字符串的输入,输出,合并,修改,比较,转换,复制,搜索几类。
用于输入输出的函数包含在stdio.h中而其他的字符串处理函数一般包含在string.h中。

1:字符串的输出函数
int puts(char const*strPtr);
输出字符串到显示器中去,传入的实参可以是字符串数组也也可以是字符指针
一般情况下我们用fputs来代替

2:字符串的输入函数
char *gets(char *strptr);
char *fgets();
从标准键盘输入一个字符串存放到指针strptr指向的字符数组,一般我们使用fgets来操作

3:获取字符串的长度
int strlen(char const*string);
获取字符串的长度,返回的是字符的个数,但是不会包括’\0’,结束符

4:字符串拷贝函数
char *strcpy(char*des,char*src);
char *strncpy(char *des,char *src,int size);
将src指向的字符串拷贝到des指向的字符串数组中去,结束符也一同进行拷贝,size参数也可以拷贝制定长度的字符串,建议des为字符数组
注意:目标尽量使用字符数组,因为如果是字符指针的话,分配的内存在常量池中,是不允许进行改变的,容易造成段错误

5:字符串的连接函数
char * strcat(const *char str1,const *char str2);
char *strncat(const *char str1,const *char str2,int size);
将str2指向的字符串连接到str1指向的字符后面,同时会删除str1后面的’\0’,返回的是str1指向字符串的首地址重点内容

6:字符串比较函数
int strcmp(const char * str1,const char *str2);
int strncmp(const char*str1,const char *str2,int size);
按照ascii码来进行比较,并由函数返回值进行判断
返回0,字符串1等于字符串2,
大于0,字符串1大于字符串2,
小于0,字符串1小于字符串2,

7:字符串分割函数
char* strtok(char *str,const char *delimiters);
根据delimiters指向的分割符号,将str指向的字符串分割成若干个子字符串,同时返回的是分割出的子字符串

8:字符串中是否包含字符
char * strchr(const char *,int c);//从做往右寻找字符c
char * strrchr(const char *,int c); //从有往左开始寻找字符c
判断字符串中是否包含字符串;

9:内存的初始化
memset(void *s,int c,size_t n);

10:内存的拷贝
memcpy(void *des,void *src ,size_t ,n);

下面通过案例来演示:

#include<stdio.h>#include<string.h>int main(int argc,char *argv[]){    char str_array[20] = {'\0'};    //gets(str_array);    //puts(str_array);    fgets(str_array,sizeof(str_array),stdin);//从标准输入中读入字节数-1个字节的字符    fputs(str_array,stdout);    char *ptr_string = "helloworld";    printf("ptr_string len:%d\n",strlen(ptr_string));    printf("==============strcpy==================\n");    char str_array2[20] = {'\0'};    strcpy(str_array2,ptr_string);    printf("str_array2:%s\n",str_array2);    printf("---------------------------\n");    char str_array3[10] = {"1234567890"};    strncpy(str_array3,ptr_string,7);//将ptr_str的前7位拷贝进去    printf("str_array3:%s\n",str_array3);    printf("===============strcmp===============\n");    char *ptr_string_1 = "helloworld";    char *ptr_string_2 = "helloworld";    printf("value:%d\n",strcmp(ptr_string_1,ptr_string_2));//等于0相等,大于零,即前一个大于后一个,小于0,前一个小于后一个,按ascii码比较    char *ptr_string_3 = "nuli";    printf("value:%d\n",strcmp(ptr_string_3,ptr_string_2));    printf("=============strcat=================\n");    char str_array4[10] = "hello";    strcat(str_array4,str_array3);    printf("str_array4:%s\n",str_array4);    printf("============strchr=================\n");//判断字符串中是否包含字符,返回的是这个字符的指针(从左往右边)    char *ptr_string_4 = strchr(str_array4,'l');    printf("ptr_string4:%s,%c\n",ptr_string_4,*ptr_string_4);    char *ptr_string_5 = strrchr(str_array4,'l');//从右往左寻找    printf("ptr_string4:%s,%c\n",ptr_string_5,*ptr_string_5);    if(strchr(ptr_string_5,'o')!=NULL){        printf("ptr_string_5 contains o!\n");    }else{        printf("ptr_string_5 not contains o!\n");    }    printf("==================strstr===========\n");//字符串中是否包含另外一个字符串    char *str9 = "hello";    char *str10 = "first helloworld";    if(strstr(str10,str9) != NULL){        printf("str10 contains str9\n");    }else{        printf("str10 not contains str9\n");    }    printf("=================strtok=============\n");    char str[] ="hello:zzf:hello:tom";    int counter = 0;    char *p = strtok(str,":");    while(p!=NULL){        counter++;        printf("%s",p);        p = strtok(NULL,":");    }    printf("================memset,memcpy==========");//内存清空和拷贝    char src[] = "i love you";    char des[] = "you love me";    memset(des,0,sizeof(des));//清空或者初始化    memcpy(des,src,sizeof(des)-1);//拷贝des字节数-1,最后一个符号用于存储结束符号    return 0;}谢谢大家访问,代码是可以直接进行run的,由于作者是一个新Coder,所以如果大家有什么指点的地方,欢迎留言或私信
1 0