1.strtok
char* strtok ( char* str, const char* sep );
- sep参数是个字符串,定义了用作分隔符的字符集合
- 第一个参数指定一个字符串,它包含了0或多个由sep字符串中一个或多个分隔符分割的标记
- strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针(注意:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并可以修改)
- strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
- strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
- 如果字符串中不存在更多的标记,则返回NULL指针。
通过代码理解strtok函数的应用:
#include <stdio.h>
int main()
{
char* p = "syy@000.ll";
const char* sep = ".@"; //分隔符
char arr[30];
char* str = NULL;
strcpy(arr, p); //将数据先拷贝一份,处理arr数组的内容
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s\n", str);
}
return 0;
}
运行结果:
2.strerror
char* strerror ( int errnum );
- 返回错误码所对应的错误信息。
下面将用0-4来测试strerror函数返回的错误信息:
通过读文件小案例来体现对strerror函数的应用:
#include<stdio.h>
#include<string.h>
#include<errno.h> //errno - C语言提供的全局的错误变量
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));*/
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror(""); //打印的依然是errno变量中错误码对应的错误信息
return 1;
}
//读文件
fclose(pf);
pf = NULL;
return 0;
}
结果如下:
注:perror(""); 与 printf("%s\n", strerror(errno)); 同等效果。
3.字符大小写转换
- tolower(将所有的大写字母转换为小写字母)
- toupper(将所有的小写字母转换为大写字母)
首先判断下面代码是否为小写字母,如果是小写字母,将所有的小写字母全部转换为大写字母。
#include <ctype.h>
#include <ctype.h>
#include <stdio.h>
int main()
{
char arr[] = "Are you ok?";
char* p = arr; //定义p指针指向arr数组首元素地址
while (*p) //当遇到字符串中 \0 结束循环
{
if (islower(*p)) //是小写字母
{
*p = toupper(*p);
}
p++; //指针向后移动
}
printf("%s\n", arr);
return 0;
}
- 注:islower函数判断字符串中字母是否是小写字母 。