C 语⾔中常见的字符串处理函数
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 st
r_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");
1
2
3
4
5
6
7
8
9
10
c语言如何创建字符串数组11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 ,所以如果⼤家有什么指点的地⽅,欢迎留⾔或私信272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论