赞
踩
- 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包
含 ‘\0’ );- 传递的实参所指向的字符串必须要以 ‘\0’ 结束,否则得到的是一个错误值;
- 函数strlen()的返回值为size_t,是无符号的整数;
int my_strlen(const char*str){
int count = 0;
assert(str 1= NULL);
while(*str != '\0')
{
count ++;
str++;
}
return count;
}
结果:
- 所拷贝的字符串必须以 ‘\0’ 结束;
- 拷贝时会将源字符串中的 ‘\0’ 拷贝到目标字符串中;
- 必须保证存放拷贝的字符串的目标空间必须足够大,以确保能存放源字符串;
4.目标空间必须可变,这样才能往里面拷贝字符串;
char* my_strcpy(char*dest,char*str)
{
char* ret = dest;
assert(dest != NULL);
assert(str != NULL);
while(*dest++ = *str++)
{
;
}
return ret;
}
结果:
源字符串必须以 ‘\0’ 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
char* my_strcat(char*dest,char*stc) { assert(dest && stc); char* ret = dest; //找目标字符串的\0 while(*dest) { dest++; } //追加字符串包括\0 while(*dest++ = *stc++)//先解引用,然后赋值,然后自增,然后判断; { ; } return ret; }
结果:
思路图解:
char* my_strstr(const char* str1,const char* str2){ assert(str1 && str2); const char* s1 =NULL; const char* s2 =NULL; const char* sta = str1;//保存原字符串的首地址 if(*str2 == '\0') { return (char*)str1; } while(*sta) { s1 = sta; s2 = str2; while(*s1 && *s2 && (*s1 == s2) { s1++; s2++; } if(*s2 == '\0') { retuen (char*) sta; } sta++; } return NULL; }
结果:
- 功能:在字符串中查找指定标记:如在(add@acdd#sd$)中,查找标记:(@#¥),然后把标记隔开的字符打印;
- 第一个参数是字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分隔标记;
- strtok函数找到str中的标记符,并将它替换为’\0’,并且用一个指针保存这个地址,然后返回这个指针;strtok函数会改变被操作的字符串,所以在使用之前应该拷贝所要操作的字符串,然后传递拷贝的字符串给strtok函数,这样目标字符串就不会被改变;
- strtok函数第一个参数不为NULL时,函数讲找到str字符串中的第一个标记,strtok函数将保存它在字符串中的位置;
- strtok函数的第一个参数为NULL时,函数将在同一个字符串中被保存的位置开始,查找下一个标记;
- 如果字符串中不存在更多的标记,则返回NULL指针;
- 例子:
int main() { char arr[] = "zyth@guhdh.tech"; char* p ="@ ."; char tmp[20] ={0}; strcpy(tmp,arr); char* ret = NULL; ret = strtok(tmp,p); printf("%s\n",ret); ret = strtok(NULL,p); printf("%s\n",ret); ret = strtok(NULL,p); printf("%s\n",ret); 进阶用法: for(ret = strtok(tmp,p);ret != NULL;ret = strtok(NULL,p)) { printf("%s\n",ret); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 结果:
函数功能:
- 返回错误码所对应的错误信息
- 必须包含头文件<errno.h> //因为errno是一个全局变量,表示错误码;
- 例子:
int main() { printf("%s\n",strerror(0)); printf("%s\n",strerror(1)); printf("%s\n",strerror(2)); printf("%s\n",strerror(3)); printf("%s\n",strerror(4)); printf("%s\n",strerror(5)); - 使用方法: //以读的形式打开一个文件,打开失败会返回NULL FILE* pf = fopen("test.txt","r"); //因为我们没有创建test.txt文件,所以程序会报错,它就会生成一个错误码>errno(全局变量),而我们使用strerror()函数来查看程序报错信息; if(pf == NULL) { printf("%s\n",strerror(errno)); return 1;//表示程序结束,不继续执行 } fclose(pf);//关闭文件 pf = NULL; return 0; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 函数功能:
- 自动读取errno的值,并转换成相应的错误信息,并且打印错误信息
- strerror()函数,手动读取errno的值,不会打印错误信息;
- 对于字符串函数,我们往往只需要知道怎么用即可,而如果我们想进一步了解它们的实现原理,我们可以在安装Vs的文件夹里搜索相应的函数.c文件即可,它们都是库函数;
- 我们想要查找一些库函数可以使用的工具有:MSDN
- MSDN 软件包->百度网盘:
链接:https://pan.baidu.com/s/1YPWmuy5gQmGuWOtYFa-13A
提取码:87is
3.本次分享到此结束了,感谢大家的支持声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/71516
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。