C语言进阶⑬(字符串函数)+(指针编程题)strlen+strcpy+strcat+strstr+strtok+strerror(中):https://developer.aliyun.com/article/1513076
2.9 strtok
文档:char * strtok ( char * str, const char * sep );
注意事项:strtok 会破坏原字符串,分割后原字符串保留第一个分割符前的字符
分割邮箱使用演示:
#include<stdio.h> #include<string.h> int main() { const char* sep = "/."; char email[] = "https://blog.csdn.net/GRrtx?type=blog"; char cp[40] = { 0 }; strcpy(cp, email); char* ret = strtok(cp, sep); if (ret != NULL) printf("%s\n", ret); ret = strtok(NULL, sep); if (ret != NULL) printf("%s\n", ret); ret = strtok(NULL, sep); if (ret != NULL) printf("%s\n", ret); ret = strtok(NULL, sep); if (ret != NULL) printf("%s\n", ret); ret = strtok(NULL, sep); if (ret != NULL) printf("%s\n", ret); return 0; }
运行结果:
上面代码看书后用for优化后我的表情是这样的:
#include<stdio.h> #include<string.h> int main() { const char* sep = "/."; char email[] = "https://blog.csdn.net/GRrtx?type=blog"; char cp[40] = { 0 }; strcpy(cp, email); for (char* ret = strtok(cp, sep); ret != NULL; ret = strtok(NULL, sep)) { printf("%s\n", ret); } return 0; }
2.10 strerror
文档:char * strerror ( int errnum );
返回错误码,所对应的错误信息。
C语言的库函数,在执行失败的时候,都会设置错误码,设置好的:
使用演示:
#include<stdio.h> #include<string.h> #include<errno.h> int main() { FILE* pf = fopen("test.txt", "r");//打开文件操作,后面会学 if (pf == NULL) { printf("%s\n", strerror(errno)); return 1; } fclose(pf); pf = NULL; return 0; }
3 字符分类函数和字符转换函数
3.1字符分类函数
下面函数的头文件: #include <ctype.h> (这些函数不常用,刷题想不出来可以自己模拟实现)
代码演示:isupper
#include <stdio.h> #include <ctype.h> int main() { char ch = 'R'; if(isupper(ch))//是大写字母就返回非0 真 { printf("是大写字母\n"); } else { printf("不是大写字母\n"); } return 0; }
3.2字符转换函数
#include <ctype.h>
int tolower ( int c ); //大写转小写
int toupper ( int c ); //小写转大写
#include<stdio.h> #include <ctype.h> int main() { int i = 0; char arr[] = "Test String.\n"; while (arr[i] != '\0') { if (isupper(arr[i])) { arr[i] = tolower(arr[i]); } printf("%c", arr[i]); i++; } //运行结果:test string. return 0; }
本篇完
练习就是自己模拟实现上面五种模拟实现的函数,其它的有时间就模拟下