字符函数和字符串函数

字符分类函数

这些函数的使⽤都需要包含⼀个头⽂件是 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值