尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

字符函数和字符串函数学习笔记

字符函数和字符串函数学习笔记 一、字符分类函数以一个函数为例子·intislower(intc);//判断参数部分的c是否是小写字母如果是就返回一个非零值如果不是就返回零。下面是应用这个函数进行大写转小写的代码#defineCRT_SECURE_NO_WARNINGS#includestdio.h#includectype.hintmain(){chara[]I am a student!;inti0;intc0;while(a[i]){ca[i];if(islower(c)){c-32;}putchar(c);i;}return0;}二、字符转换函数c语言提供了两个字符转换函数inttolower(intc);//将参数转化为小写字母inttoupper(intc);//将参数转化为大写字母利用小写转化的函数可以简化上面的代码intmain(){chars[]I am a student!;inti0;while(s[i]){if(islower(s[i])){s[i]toupper(s[i]);}putchar(s[i]);i;}return0;}三、strlen注意strlen的返回值是size_t类型如果被转化成整型可能出现负数变成一个很大的正数情况。下面用递归的方式进行该函数的模拟实现size_tmy_strlen(constchar*s){if(*s)return1my_strlen(s1);elsereturn0;//可以画图理解先递推后回归得到3的过程。}intmain(){size_tlenmy_strlen(abc);printf(%d,len);return0;}四、strcpy功能字符串拷贝代码演示intmain(){chararr1[10]{0};chararr2[]abc;strcpy(arr1,arr2);printf(%s,arr1);return0;}模拟实现char*my_strcpy(char*arr1,char*arr2){char*retarr1;while(*arr2){*arr1*arr2;arr1;arr2;}*arr1*arr2;returnret;}intmain(){chararr1[10]{0};chararr2[]abc;my_strcpy(arr1,arr2);printf(%s,arr1);return0;}五、strcat功能字符串追加代码演示intmain(){chararr1[30]hello;//注意要给目标数组足够的空间否则有溢出的风险chararr2[]world;strcat(arr1,arr2);printf(%s,arr1);return0;}模拟实现char*my_strcat(char*arr1,char*arr2){char*retarr1;while(*arr1){arr1;}while(*arr2){*arr1*arr2;arr1;arr2;}returnret;}intmain(){chararr1[20]abc;chararr2[]def;my_strcat(arr1,arr2);printf(%s,arr1);return0;}六、strcmp功能用来比较str1和str2指向的字符串。从两个字符串第一个字符开始比较ascll码值相等就比较下一个直到全部结束返回值第一个字符串大于第二个就返回大于0的数等于就返回0小于就返回小于0的数。代码演示intmain(){chars1[]abcd;chars2[]abde;intrstrcmp(s1,s2);if(r0)printf(s1s2);elseif(r0)printf(s1s2);elseprintf(s1s2);return0;}模拟实现intmy_strcmp(constchar*s1,constchar*s2){while(*s1*s2){if(*s10*s20)return0;s1;s2;}intcpm*s1-*s2;if(cpm0)printf(s1s2);elseprintf(s1s2);return*s1-*s2;}intmain(){chars1[]abc;chars2[]abd;my_strcmp(s1,s2);return0;}七、strncpy、strncat、strncmp三个函数和前面一组三个函数的区别在于这一组有字符的限制限制了最多拷贝的字符个数。但是存在小区别strncpy拷贝过后不会自动加上\0但是strncat会。写代码时建议用这一组函数更加安全。八、strstr功能查找str2指向的字符串在str1字符串中第一次出现的位置。返回值如果能够查找返回第一次出现位置的指针如果不能查找到返回空指针。代码演示intmain(){chars1[]abcde;chars2[]de;char*pstrstr(s1,s2);printf(%s,p);return0;}顺便回忆字符串的名字就是首元素地址。%s 的职责是给一个地址从那里开始打印字符直到 \0”。指针正好能提供这个地址。九、strtok功能分割字符串注意这个函数具有破坏性会在分割的位置加上\0,所以使用的时候需要先拷贝一份原数据。代码演示intmain(){chars1[]aaa.bbb.ccc.ddd;chars2[].;charcopy[30]{0};strncpy(copy,s1,30);constchar*p;for(pstrtok(s1,s2);p!0;pstrtok(NULL,s2))//这是一种简易的写法{printf(%s\n,p);}return0;}
返回列表