吉林省交通建设质量监督站网站,国内较好的网站开发商城,wordpress多用户主题,wordpress首页显示栏目分类文章目录 前言一、strlen求字符串长度的函数二、字符串拷贝函数strcpy三、链接或追加字符串函数strcat四、字符串比较函数strcmp五、长度受限制字符函数六、找字符串2在字符串1中第一次出现的位置函数strstr七、字符串切割函数strtok#xff08;可以切割分隔符#xff09;八、… 文章目录 前言一、strlen求字符串长度的函数二、字符串拷贝函数strcpy三、链接或追加字符串函数strcat四、字符串比较函数strcmp五、长度受限制字符函数六、找字符串2在字符串1中第一次出现的位置函数strstr七、字符串切割函数strtok可以切割分隔符八、翻译错误码所对应的错误信息strerror 前言
在编程的过程中我们经常要处理字符和字符串为了方便操作字符和字符串C语言标准库中提供了一系列的库函数接下来我们就学习⼀下这些函数。 一、strlen求字符串长度的函数 size_t strlen ( const char * str ) 这个函数是我们之前用的最多的函数了所以相对之下也比较熟悉这里也就简单地概括一下讲下注意点这个函数他/0零作为结束标志注意和sizeof的区别。他的模拟实现有三种方法http://t.csdnimg.cn/PXwTV以前写过就不多说了。 二.字符串拷贝函数strcpy char* strcpy(char * destination, const char * source ); 2.1使用
destination这个是目的source这个是源头字符拷贝的意思就是把源头的数据拷贝到目的中去。使用之前引用头文件string.h。
int main()
{char name[20] { 0 };strcpy(name,zhangsan);printf(%s,name);return 0;
}
打印的结果就是zhangsa但是要注意目地空间必须是可以改变的改变的不可以为常量字符串。注意:1.它以/0结束。2.它会把/0也拷入目地空间。3.目的空间必须足够大不然会越界。
2.2模拟实现
my_strcpy(char* dest, const char* src)
{assert(dest src);char* ret dest;while (src){*dest *src;}*dest *src;//拷贝/0return ret;
}为这个代码他最后是要返回目的的数组,所以在开始前我得先把他的地址拷贝起来
三.链接或追加字符串函数strcat char* strcat(char * destination, const char * source ); 3.1使用
int main()
{char arr1[20] hello ;char arr2[] world;strcat(arr1, arr2);printf(%s, arr1);return 0;
}
打印结构就是hello world用法根之前同理目标空间必须足够大而且是要可修改的目标字符串中也得有 \0否则没办法知道追加从哪里开始。
3.2模拟实现
my_strcat(char* dest, const char* src)
{//assert(dest src);//找到dest的/0char* ret dest;while (*dest ! \0){dest;}//拷贝字符while (*src){*dest *src;}*dest *src;//拷贝/0return ret;}
3.3字符串自己给自己追加如何 先说结论是不能自己给自己追加的 因为自己会把/0覆盖导致没有/0会陷入一种死循环 四.字符串比较函数strcmp char* strcmpchar * destination, const char * source ); 4.1使用
比较字符串函数注意比较的不是长度比的是asc码值
int main()
{char arr1[20] abcd;char arr2[20] cdf;int astrcmp(arr1, arr2);printf(%d,a);return 0;
}
打印结果为-1所以说如果arr1比arr2小就会返回-1等于就会返回0大于就会返回1。 4.2模拟实现
int my_strcmp(char* str1, const char* str2)
{//assert(str1 str2);while (*str1 *str2){//相等if (*str1\0 || *str2\0){return 0;}str1;str2;}return (*str1 - *str2);}
五.长度受限制字符函数
以上就是长度不受限制的函数长度受限制的函数要更加安全在它们的后面添加数字n就可以自己去定义strncpystrncatstrncmp ( char * destination, const char * source, size_t num ); 举一个例子 六.找字符串2在字符串1中第一次出现的位置函数strstr char * strstr ( const char * str1, const char * str2) 6.1使用
int main()
{char str[] This is a simple string;char* pch strstr(str, simple);if (pch NULL){printf(不存在);}elseprintf(%s\n, pch);return 0;
}
打印结果为simple string说明如果找到了的话它就会返回一个地址
6.2模拟实现
他的模拟实现是比较复杂的我们要分两种情况去考虑
情况1一次就匹配就找到了 情况2多次匹配才可以找到 char* my_strstr(const char* str1, const char* str2)
{//定义3个变量s1,s2用来比较cur用来解决第2种情况const char* s1 NULL;const char* s2 NULL;const char* cur str1;//cur不为空就一直走while (cur){s1 str1;s2 str2;//到了\0就停不相等也停while(*s1!\0 *s2!\0 *s1*s2){s1;s2;}//如果是s2到0了说明找到了if (*s2 \0){return cur;}//可能存在第2找情况cur;}//说明没有找到return NULL;
} 七.字符串切割函数strtok可以切割分隔符 char * strtok ( char * str, const char * sep); 这个函数的使用比较难所以我们这里之讲解它的使用。
使用 注意strtok函数找到str中的下一个标记并将其用 \0 结尾返回一个指向这个标记的指针strtok函数的第一个参数不为NULL函数将找到str中第一个标记strtok函数将保存它在字符串中的位置。strtok函数的第一个参数为NULL 函数将在同一个字符串中被保存的位置开始查找下一个标记。 所以说只用一个是无法找完所以的要配合循环语句一起使用
int main()
{char arr[] 192.168.6.111;char* sep .;char* str NULL;for (str strtok(arr, sep); str ! NULL; str strtok(NULL, sep)){printf(%s\n, str);}return 0;
}
八.翻译错误码所对应的错误信息strerror
strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来 1.No error 2.Operation not permitted 3.No such file or directory 4.No such process 5.Interrupted function call 6.Input / output error 7.No such device or address 8.Arg list too long 9.Exec format error 10.Bad file descriptor 11.No child processes 常见的错误信息