C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。
这些函数的使用都需要包含一个头文件 ctype.h。
例:将一句话中的小写字母改成大写字母。
头文件:ctype.h
C语言提供了2个字符转换函数:
int tolower(int c);//将参数传进去的大写字母转小写
int toupper(int c);//将参数传进去的小写字母转大写
所以上述例题可以这些解决。
头文件:string.h
size_t strlen(const char* str)
注:size_t 的运算的最后的返回类型还是size_t(无符号整型)。
1.计数器
2.指针
3.函数递归(没有创建第三变量)
那么,如果字符串自己给自己追加会怎么样呢?
在一些编译器中可能正常运行,但是在另一些编译器中,它可能就是无限循环下去了。
注:strncmp,strncat,strncpy。主要就是一个n的区别,请读者自行查看相关教程。
char* strtok(char* str,const char* sep);
const char* strstr(const char* str1,const char* str2);
功能:在str1中找到str2这个字符串,第一次出现的位置,如果找到了,就返回这个第一次出现的起始地址。如果没找到,就返回NULL。
- #include
- #include
-
- int main()
- {
- char arr[] = "abcdefabcdef";
- char* p = "efab";
- char* ret = strstr(arr, p);
-
- if (ret == NULL)
- {
- printf("不存在");
- }
- else
- {
- printf("%s", ret);
- }
-
- return 0;
- }
- #include
- #include
- #include
-
- const char* my_strstr(const char* str1, const char* str2)
- {
- assert(str1 && str2);
- const char* s1 = str1;
- const char* s2 = str2;
- const char* cur = str1;
-
- if (*str2 == '\0')
- {
- return str1;
- }
-
- while (*cur)
- {
- s1 = cur;
- s2 = str2;
-
- while (*s1 && *s2 && *s1 == *s2)
- {
- s1++;
- s2++;
- }
- if (*s2 == '\0')
- return cur;
- cur++;
- }
-
- return NULL;
- }
-
- int main()
- {
- char arr[] = "abcdefabcdef";
- char* p = "cdef";
- const char* ret = my_strstr(arr, p);
-
- if (ret == NULL)
- {
- printf("不存在");
- }
- else
- {
- printf("%s", ret);
- }
-
- return 0;
- }
strerror 函数可以把参数部分错误码对应的错误信息的字符串地址返回来。
在不同的系统和C语言标准库的实现中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会将对应的错误码,存放在errno中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是会对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回。perror就是直接将错误码对应的错误信息打印出来。
- #include
- #include
- #include
-
- int main()
- {
- //打开文件
- FILE* PF = fopen("data.txt", "r");//"r"——以读文件的形式打开文件,如果文件不存在,就打开失败,返回空指针。
- if (PF == NULL)
- {
- printf("文件打开失败,原因是:%s", strerror(errno));
- perror("文件打开失败,原因是:");
- //perror == printf + strerror
- return 1;
- }
- else
- {
- printf("打开文件成功");
- //。。。。
- fclose(PF);
- PF = NULL;
- }
- return 0;
- }
作者自述:本文主要针对C语言的字符串函数的知识。内容中包含了很多总结内容。本文制作不易,求求动动你们发财的小手点个赞和关注,这是对我创造最大的动力。后续我也会跟进内容,尽量一周至少一次,保证内容的质量。如果有想知道的内容或者有建议的地方,欢迎后台私信或者在本文留言哦。感谢各位的支持捏Thanks♪(・ω・)ノ。