目录:
1.字符分类函数
C语言中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。
这些函数的使用都需要包含⼀个头⽂件是 ctype.h
举个栗子:
判断是否小写字母
通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回⾮0的整数,如果不是⼩写字⺟,则返回0。
char a = 'A';
printf("%d\n", islower(a)); // 0
2.字符转换函数
包含头文件 #include <ctype.h>
int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写
int toupper ( int c ); //将参数传进去的⼩写字⺟转⼤写
3.strlen的使用
判断字符串的长度,注意所判断的字符串的长度必须 ‘\0’ 结尾。因为这个函数的实现就是从头一直找,指导找到 '\0’就停止了。
包含头文件 #include <string.h>
size_t strlen ( const char * str ); //size_t就是无符号整数
4.strcpy的使用
字符串拷贝。 把src字符串拷贝到dest字符串中。
1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
4.⽬标空间必须可修改。
dest: destination
src: source
char* strcpy(char * dest, const char * src );
5.strcat的使用
字符串追加。 把src字符串追加到dest字符串中。
1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
4.⽬标空间必须可修改。
dest: destination
src: source
char* strcat(char * dest, const char * src );
6.strcmp的使用
字符串比较,比较字符串s1和字符串s2两个字符串中对应位置上字符ASCII码值的⼤⼩。
字符串s1 > 字符串s2,则返回 > 0的数字
字符串s1 == 字符串s2,则返回 0
字符串s1 < 字符串s2,则返回 < 0的数字
int my_strcmp (const char * s1, const char * s2);
7.strncpy的使用
比strcpy 中间多了个字母,函数的参数也多了一个
从src字符串拷贝 num 个字符到dest
如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边追加'\0',直到num个。
否则,指定多少个就拷贝多少个。
char * strncpy ( char * dest, const char * src, size_t num );
8.strncat的使用
字符串追加。 从src字符串中追加 num个 到dest字符串中。
追加完后会主动在dest字符串后增加一个 '\0'。
如果src 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 '\0' 的内容追
加到dest指向的字符串末尾。
char * strncat ( char * dest, const char * src, size_t num );
9.strncmp的使用
字符串比较,比较字符串s1和字符串s2两个字符串中前 num 个字符的大小。
字符串s1 > 字符串s2,则返回 > 0的数字
字符串s1 == 字符串s2,则返回 0
字符串s1 < 字符串s2,则返回 < 0的数字
int strncmp ( const char * s1, const char * s2, size_t num );
10.strstr的使用
返回s2 字符串在s1字符串第一次出现的位置指针
char * strstr ( const char * s1, const char * s2);
如果想知道s2在s1第一次出现的位置下标可以这样写:
char s1[] = "aaaaayesaaaaaa";
char s2[] = "yes";
char* start = strstr(s1, s2);
printf("%d\n", start - s1); //5
11.strtok函数的使用
用sep 指向的字符来分割 str
如果str!= null,则strtok返回第一个被分割的字段
如果str==null,则strtok,则在上一个被分割的字段之后继续分割。
如果str中不存在sep,则返回null
sep:sperate
char * strtok ( char * str, const char * sep);
如果想要分割一个IP地址可以:
char arr[] = "192.168.0.1";
char* sep = ".";
char* str = NULL;
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s ", str);
}
//输出 192 168 0 1
12.strerror函数的使用
打印错误码信息
包含 #include<errno.h>
strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。
char * strerror ( int errnum );
for (int i = 0; i <= 10; i++) {
printf("%d: %s\n",i ,strerror(i));
}
0: No error
1: Operation not permitted
2: No such file or directory
3: No such process
4: Interrupted function call
5: Input/output error
6: No such device or address
7: Arg list too long
8: Exec format error
9: Bad file descriptor
10: No child processes