本篇文章是对C言语字符串操作进行了具体的总结剖析,需求的朋友参阅下
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[]);
功用:将字符串source拷贝到字符串destination中
例程:
#include
void main(void)
{
char str1[10] = { “TsinghuaOK”};
char str2[10] = { “Computer”};
cout <
运转成果是:Computer
第二个字符串将掩盖掉第一个字符串的一切内容!
留意:在界说数组时,字符数组1的字符串长度有必要大于或等于字符串2的字符串长度。不能用赋值句子将一个字符串常量或字符数组直接赋给一个字符数组。一切字符串处理函数都包括在头文件string.h中。
strncpy(char destination[], const char source[], int numchars);
strncpy:将字符串source中前numchars个字符拷贝到字符串destination中。
strncpy函数使用举例
原型:strncpy(char destination[], const char source[], int numchars);
功用:将字符串source中前numchars个字符拷贝到字符串destination中
例程:
#include
#include
void main(void)
{
char str1[10] = { “Tsinghua “};
char str2[10] = { “Computer”};
cout <
运转成果:Comnghua
留意:字符串source中前numchars个字符将掩盖掉字符串destination中前numchars个字符!
原型:strcat(char target[], const char source[]);
功用:将字符串source接到字符串target的后边
例程:
#include
#include
void main(void)
{
char str1[] = { “Tsinghua “};
char str2[] = { “Computer”};
cout <
运转成果:Tsinghua Computer
留意:在界说字符数组1的长度时应该考虑字符数组2的长度,由于衔接后新字符串的长度为两个字符串长度之和。进行字符串衔接后,字符串1的结束符将主动被去掉,在结束串结束保存新字符串后边一个结束符。
原型:strncat(char target[], const char source[], int numchars);
功用:将字符串source的前numchars个字符接到字符串target的后边
例程:
#include
#include
void main(void)
{
char str1[] = { “Tsinghua “};
char str2[] = { “Computer”};
cout <
运转成果:Tsinghua Com
原型:int strcmp(const char firststring[], const char secondstring);
功用:比较两个字符串firststring和secondstring
例程:
#include
#include
void main(void)
{
char buf1[] = “aaa”;
char buf2[] = “bbb”;
char buf3[] = “ccc”;
int ptr;
ptr = strcmp(buf2,buf1);
if(ptr > 0)
cout <<"Buffer 2 is greater than buffer 1"<
cout <<"Buffer 2 is less than buffer 1"<
if(ptr > 0)
cout <<"Buffer 2 is greater than buffer 3"<
cout <<"Buffer 2 is less than buffer 3"<
运转成果是:Buffer 2 is less than buffer 1
原型:strlen( const char string[] );
功用:核算字符串string中字符的个数
例程:
#include
#include
void main(void)
{
运转成果The length of the string is x (x为你输入的字符总数字)
留意:strlen函数的功用是核算字符串的实践长度,不包括在内。别的,strlen函数也能够直接测验字符串常量的长度,如:strlen(“Welcome”)。
void *memset(void *dest, int c, size_t count);
将dest前面count个字符置为字符c.
void *memmove(void *dest, const void *src, size_t count);
从src仿制count字节的字符到dest. 假如src和dest呈现堆叠, 函数会主动处理.
void *memcpy(void *dest, const void *src, size_t count);
从src仿制count字节的字符到dest. 与memmove功用相同, 仅仅不能处理src和dest呈现堆叠.
void *memchr(const void *buf, int c, size_t count);
在buf前面count字节中查找初次呈现字符c的方位. 找到了字符c或许现已查找了count个字节, 查找即中止. 操作成功则回来buf中初次呈现c的方位指针, 不然回来NULL.
void *_memccpy(void *dest, const void *src, int c, size_t count);
从src仿制0个或多个字节的字符到dest. 当字符c被仿制或许count个字符被仿制时, 仿制中止.
假如字符c被仿制, 函数回来这个字符后边紧挨一个字符方位的指针. 不然回来NULL.
int memcmp(const void *buf1, const void *buf2, size_t count);
比较buf1和buf2前面count个字节巨细.
回来值< 0, 表明buf1小于buf2;
回来值为0, 表明buf1等于buf2;
回来值> 0, 表明buf1大于buf2.
int memicmp(const void *buf1, const void *buf2, size_t count);
比较buf1和buf2前面count个字节. 与memcmp不同的是, 它不区别巨细写.
回来值同上.
char *strrev(char *string);
将字符串string中的字符次序倒置过来. NULL结束符方位不变.
char *_strupr(char *string);
将string中一切小写字母替换成相应的大写字母, 其它字符坚持不变.
char *_strlwr(char *string);
将string中一切大写字母替换成相应的小写字母, 其它字符坚持不变.
char *strchr(const char *string, int c);
查找字
char *strrchr(const char *string, int c);
查找字符c在字符串string中最终一次呈现的方位, 也便是对string进行反序查找, 包括NULL结束符.
回来一个指针, 指向字符c在字符串string中最终一次呈现的方位, 假如没有找到, 则回来NULL.
char *strstr(const char *string, const char *strSearch);
在字符串string中查找strSearch子串.
char *strdup(const char *strSource);
函数运转中会自己调用malloc函数为仿制strSource字符串分配存储空间, 然后再将strSource仿制到分配到的空间中. 留意要及时开释这个分配的空间.
回来一个指针, 指向为仿制字符串分配的空间; 假如分配空间失利, 则回来NULL值.
char *strcat(char *strDestination, const char *strSource);
将 源串strSource增加到方针串strDestination后边, 并在得到的新串后边加上NULL结束符. 源串strSource的字符会掩盖方针串strDestination后边的结束符NULL. 在字符串的仿制或增加过程中没有溢出查看, 所以要确保方针串空间足够大. 不能处理源串与方针串堆叠的状况.
char *strncat(char *strDestination, const char *strSource, size_t count);
将 源串strSource开端的count个字符增加到方针串strDest后. 源串strSource的字符会掩盖方针串strDestination后边的结束符NULL. 假如count大于源串长度, 则会用源串的长度值替换count值. 得到的新串后边会主动加上NULL结束符. 与strcat函数相同, 本函数不能处理源串与方针串堆叠的状况. 函数回来strDestination值.
char *strcpy(char *strDestination, const char *strSource);
仿制源串strSource到方针串strDestination所指定的方位, 包括NULL结束符. 不能处理源串与方针串堆叠的状况.函数回来strDestination值.
char *strncpy(char *strDestination, const char *strSource, size_t count);
将 源串strSource开端的count个字符仿制到方针串strDestination所指定的方位. 假如count值小于或等于strSource串的长度, 不会主动增加NULL结束符方针串中, 而count大于strSource串的长度时, 则将strSource用NULL结束符填充补齐count个字符, 仿制到方针串中. 不能处理源串与方针串堆叠的状况.函数回来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的长度替换count值. 函数回来内容调整后的string指针.