C语言字符串操作总结大全(超详细)

巡山小妖精
803次浏览
2021年02月11日 04:21
最佳经验
本文由作者推荐

-

2021年2月11日发(作者:yangguifei)


C


语言字符串操作总结大全


(

< br>超详细


)



1


)字符串操作




strcpy(p, p1)


复制字符串




strncpy(p, p1, n)


复制指定长度字符串




strcat(p, p1)


附加字符串




strncat(p, p1, n)


附加指定长度字符串




strlen(p)


取字符串长度




strcmp(p, p1)


比较字符串




strcasecmp


忽略大小写比较字符串



strncmp(p, p1, n)


比较指定长度字符串




strchr(p, c)


在字符串中查找指定字符




strrchr(p, c)


在字符串中反向查找




strstr(p, p1)


查找字符串




strpbrk(p, p1)


以目标字符串的所有字符作为 集合,在当前字符串查找该集合的任一元素




strspn(p, p1)


以目标字符串的所有字符作为集 合,在当前字符串查找不属于该集合的任一元


素的偏移




strcspn(p, p1)


以 目标字符串的所有字符作为集合,


在当前字符串查找属于该集合的任一元素


的偏移





*


具有指定长度的字符串处理函数在已处理的字符串之后填补 零结尾符






2


)字符串到数值类型的转换




strtod(p,


ppend)


从字符串



p


中转换



double


类型数值,并将后续的字符串指针存储到



ppend


指向的



char*


类型存储。



strtol(p, ppend, base)


从字符串



p


中转换



long


类型整型数值,


base


显式设置转换的整型进


制,设置为



0


以根据特定格式判断所用进制,


0x,


0X


前缀以解释为十六进制格式整型,


0





前缀以解释为八进制格式整型



atoi(p)


字符串转换到



int


整型




atof(p)


字符串转换到



double


符点数




atol(p)


字符串转换到



long


整型






3


)字符检查




isalpha()


检查是否为字母字符




isupper()


检查是否为大写字母字符




islower()


检查是否为小写字母字符




isdigit()


检查是否为数字




isxdigit()


检查是否为十六进制数字表示的有效字符




isspace()


检查是否为空格类型字符




iscntrl()


检查是否为控制字符




ispunct()


检查是否为标点符号




isalnum()


检查是否为字母和数字




isprint()


检查是否是可打印字符




isgraph()


检查是否是图形字符,等效于



isalnum() | ispunct()





4


)函数原型



原型:


strcpy(char destination[], const char source[]);


< /p>


功能:将字符串


source


拷贝到字符 串


destination





例程:






#include



#include



void main(void)



{





char str1[10] = {





char str2[10] = {





cout <



}




运行结果是


:Computer



第二个字符串将覆盖掉第一个字符串的所有内容!




注意:


在定义数组时,


字符数组


1


的字符串长度必须大于或等于字符串


2


的字符串长度。



能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。


所有字符串处理函 数都


包含在头文件


string.h


中 。





strncpy(char destination[], const char source[], int numchars);



< /p>


strncpy


:将字符串


source


中前


numchars


个字符拷贝到字 符串


destination


中。




strncpy


函数应用举例




原型:


strncpy(char destination[], const char source[], int numchars);



功能:将字符串


source


中前


numchars


个字符拷贝到字符串< /p>


destination





例程:






#include



#include



void main(void)



{





char str1[10] = {





char str2[10] = {





cout <



}




运行结果:


Comnghua



注意:


字符串


source


中前


numchars


个字符将覆盖掉字符串


destination


中前


numchars


个字符!





原型:


strcat(char target[], const char source[]);



功能:将字 符串


source


接到字符串


targ et


的后面




例程:




#include



#include



void main(void)



{





char str1[] = {





char str2[] = {





cout <



}




运行结果:


Tsinghua Computer




注意:


在 定义字符数组


1


的长度时应该考虑字符数组

2


的长度,


因为连接后新字符串的长度

为两个字符串长度之和。


进行字符串连接后,


字符串


1


的结尾符将自动被去掉,


在结尾串末


尾保留新字符串后面一个结尾符。





原型:


strncat(char target[], const char source[], int numchars);



功能:将字符串


source


的前


numchars


个字符接到字符串


target


的后面




例程:





#include



#include



void main(void)



{





char str1[] = {





char str2[] = {





cout <



}




运行结果:


Tsinghua Com





原型:


int strcmp(const char firststring[], const char secondstring);



功能:比较两个字符串


firsts tring



secondstring



例程:






#include



#include



void main(void)



{





char buf1[] =





char buf2[] =





char buf3[] =





int ptr;






ptr = strcmp(buf2,buf1);






if(ptr > 0)






cout <<





else







cout <<





ptr = strcmp(buf2,buf3);






if(ptr > 0)






cout <<





else







cout <<



}




运行结果是


:Buffer 2 is less than buffer 1






















Buffer 2 is greater than buffer 3





原型:


strlen( const char string[] );



功能:统计字符串


string


中字符的个数




例程:






#include



#include



void main(void)



{





char str[100];






cout <<


请输入一个字符串


:





cin >>str;





cout <<





}




运行结果


The length of the string is x (x


为你输入的字符总数字


)




注意:


s trlen


函数的功能是计算字符串的实际长度,不包括


'0'


在内。另外,


strlen


函数也可< /p>


以直接测试字符串常量的长度,如:


strlen(








void *memset(void *dest, int c, size_t count);





des t


前面


count


个字符置为字符


c.



返回


de st


的值


.





void *memmove(void *dest, const void *src, size_t count);





src


复制


count


字节 的字符到


dest.


如果


src



dest


出现重叠


,


函数会自动处理


.



返回


dest


的值


.





void *memcpy(void *dest, const void *src, size_t count);



< p>


src


复制


count


字节的字符到


dest.



memmove


功能一样


,

< br>只是不能处理


src



dest


出现


重叠


.



返回


dest


的值

.





void *memchr(const void *buf, int c, size_t count);





buf


前面


count


字节中查找首次出现字符


c


的位置

< br>.


找到了字符


c


或者已经搜寻 了


count


个字节


,


查找即停止


.


操作成功则返回


buf


中首次出现


c


的位置指针


,


否则返回


NULL.




void *_memccpy(void *dest, const void *src, int c, size_t count);





src


复制


0


个或多个字节的字符到


dest.


当字符

< br>c


被复制或者


count


个字符 被复制时


,


复制


停止


.





如果字符


c


被复制


,


函数返回这个字符后面紧挨一个字符位置的指针


.


否则返回


NULL.





int memcmp(const void *buf1, const void *buf2, size_t count);




比较

< p>
buf1



buf2


前面


count


个字节大小


.




返回值


< 0,


表示


buf1


小于


buf2;




返回值为


0,


表示

< br>buf1


等于


buf2;




返回值


> 0,

< br>表示


buf1


大于


buf2.





int memicmp(const void *buf1, const void *buf2, size_t count);





比较


buf1



buf2< /p>


前面


count


个字节

< br>.



memcmp


不同的是< /p>


,


它不区分大小写


.





返回值同上


.





char *strrev(char *string);




将字符串


string


中的字符顺序颠倒过来


. NULL


结束符位置不变


.



返回调整后的字符串的指



.





char *_strupr(char *string);





str ing


中所有小写字母替换成相应的大写字母


,


其它字符保持不变


.



返回调整后的字符串


的指针


.





char *_strlwr(char *string);





str ing


中所有大写字母替换成相应的小写字母


,


其它字符保持不变


.



返回调整后的字符串


的指针


.





char *strchr(const char *string, int c);




查找字





string


中首次出现的位置


,


NULL


结束符也包含在查找中


.



返回一个指针


,

< br>指向


字符


c


在字符串

< p>
string


中首次出现的位置


,


如果没有找到


,


则返回


NULL.




char *strrchr(const char *string, int c);



查找字符


c


在字符串


string


中最后一次出现的位置


,


也就是对< /p>


string


进行反序搜索


,


包含


NULL


结束符


.




返回一个指针


,


指向字符

< p>
c


在字符串


string


中最后一次出现的位置


,


如果没有找到


,


则返回


NULL.





char *strstr(const char *string, const char *strSearch);




在字 符串


string


中查找


strSea rch


子串


.


返回子串


strSearch



s tring


中首次出现位置的指针


.


如果没有找到子串


strSearch,


则返回


NULL.


如果子串


strSearch


为空串


,


函数返回


string



.




char *strdup(const char *strSource);




函数运行中会自己调用


malloc


函数为复制


strSource


字符串 分配存储空间


,


然后再将


strSo urce


复制到分配到的空间中


.


注意要及时释放这个分配的空间


.



返回一个指针


,


指向为复制字符串分配的空间


;


如果分配空间失败


,


则返回


NULL



.





char *strcat(char *strDestination, const char *strSource);




将源 串


strSource


添加到目标串


s trDestination


后面


,


并在得到的新串后面加上


NULL


结束符


.


源串


strSource


的字符 会覆盖目标串


strDestination


后面的结束符


NULL.


在字符串的复制或


添加过程中 没有溢出检查


,


所以要保证目标串空间足够大


.


不能处理源串与目标串重叠的情



.



函数返回


strDestinati on



.




char *strncat(char *strDestination, const char *strSource, size_t count);



将源串


strSource


开始的


count


个字符添加到目标串


strDe st



.


源串


strSource


的字符会覆盖


目标串

strDestination


后面的结束符


NULL.


如果


count


大于源串长度


,


则会用源串的长度值


替换

< br>count



.


得到的新串后 面会自动加上


NULL


结束符


.



strcat


函数一样

< br>,


本函数不能处


理源串与目标串重叠的情况

< p>
.


函数返回


strDestination



.




char *strcpy(char *strDestination, const char *strSource);




复制源串


strSource


到目标串


strDestination


所指定的位置


,


包含


NULL


结束符

< p>
.


不能处理源


串与目标串重叠的情况

< p>
.


函数返回


strDestination



.




char *strncpy(char *strDestination, const char *strSource, size_t count);



将源串


strSource


开始的


count


个字符复制到目标串


strDe stination


所指定的位置


.


如果


count


值小于或等于


strS ource


串的长度


,


不会自动添加


NULL


结束符目标串中


,



count


大于


st rSource


串的长度时


,


则将< /p>


strSource



NULL


结束符填充补齐


count


个字符


,


复制到目标串



. < /p>


不能处理源串与目标串重叠的情况


.


函数 返回


strDestination



.




char *strset(char *string, int c);





string

串的所有字符设置为字符


c,


遇到


NULL


结束符停止


.


函数返回内 容调整后的


string


指针


.





char *strnset(char *string, int c, size_t count);





string


串开始


count


个字符设置为字符


c,


如果


count


值大于


string

串的长度


,


将用


string< /p>


的长度替换


count



.


函数返回内容调整后的


string


指针


.




size_t strspn(const char *string, const char *strCharSet);




查找任何一个不包含在


strCharSet


串中的字 符



(


字符串结束符

< br>NULL


除外


)


< p>
string


串中首


次出现的位置序号

< p>
.



返回一个整数值


,


指定在


string


中全部由


characters


中的字符组成的子


串的长 度


.


如果


string


以一个不包含在


strCharSet


中的字符开头


,


函数将返回


0


.


-


-


-


-


-


-


-


-