字符分类函数
这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h
判断条件是否符合,符合的话返回真
iscntrl 任何控制字符 isspace 空白字符:空格 ,换页\f ,换行\n,回车\r,制表符\t,垂 isdigit 十进制数字0~9 直制表符\v
isxdigit 十六进制数字,和所有十进制数字,大小写字母a~f/A~F
islower 小写字母a~z isupper大写字母A~Z isalpha 大小写字母a~z、A~Z
isalnum 字母或者数字a~z,A~Z,0~9
ispunct 标点符号,任何不属于数字或者字母的图形字符(可打印)
isgraph 任何图形字符 isprint任何可打印的字符,包括图形字符和空白字符
字符转换函数
tolower将参数传进去的⼤写字⺟转⼩写
toupper将参数传进去的⼩写字⺟转⼤写
strcpy函数
将字符串拷贝给目标函数
会将源字符串中的 '\0' 拷⻉到⽬标空间
目标函数需要足够大
模拟实现
char *my_strcpy(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while((*dest++ = *src++))
{
;
}
return ret;
}
strcat函数
将源字符串的副本追加到目标字符串。目标中终止的 null 字符被源的第一个字符覆盖,并且在目标中两者串联形成的新字符串的末尾包含一个 null 字符。
源字符串必须以 '\0' 结束
会将源字符串中的 '\0' 拷⻉到⽬标空间
⽬标空间必须⾜够⼤
模拟实现
char *my_strcat(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*dest)
{
dest++;
}
while((*dest++ = *src++))
{
;
}
return ret;
}
strcmp函数
将 C 字符串 str1 与 C 字符串 str2 进行比较。
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续执行以下对,直到字符不同或达到终止 null 字符。
模拟实现
int my_strcmp (const char * str1, const char * str2)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
while(*str1 == *str2)
{
if(*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
strncpy函数
char * strncpy ( char * destination, const char * source, size_t num );
将源的前 num 个字符复制到目标。如果在复制 num 个字符之前找到源 C 字符串的末尾(由 null 字符表示),则 destination 将用零填充,直到将 num 个字符写入该字符串。
如果源的长度大于 num,则不会在目标末尾隐式附加 null 字符。因此,在这种情况下,destination 不应被视为以 null 结尾的 C 字符串(这样读取会溢出)。
会将源字符串的\0传入但不会自补
strncpy(目标字符串,源字符串,num)
strncat函数
char * strncat ( char * destination, const char * source, size_t num );
将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字 符
如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾
strncmp函数
int strncmp ( const char * str1, const char * str2, size_t num );
⽐较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀ 样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回0
strstr函数
char * strstr ( const char * str1, const char * str2);
函数返回字符串str2在字符串str1中第⼀次出现的位置
字符 串的⽐较匹配不包含 \0 字符,以 \0 作为结束标志
strtok函数
char * strtok ( char * str, const char * sep);
sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合
第⼀个参数指定⼀个字符串,它包含了0个或者多个由sep字符串中⼀个或者多个分隔符分割的标 记
strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容 并且可修改。)
strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串 中的位置。
strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标 记。
如果字符串中不存在更多的标记,则返回 NULL 指针。
strerror函数
errno.h 头⽂件
char * strerror ( int errnum );
errno来记录程序的当前错误码
printf ("Error opening file unexist.ent: %s\n", strerror(errno));
perror函数
perror("Error opening file unexist.ent");
perror=printf+erron