C++char类型函数
1.0 字符串复制
1.1 strcpy() 完全复制
原型:char* strcpy(char* dest, char* src);
功能:把从src地址开始且含有 ‘\0’结束符的字符串复制到以dest开始的地址空间
返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有⾜够的空间来容纳src的字符串
1int main()
2 {
3char src[]="abcde";
4char dest[100];
5    strcpy(dest,src);
6    printf("%s",dest);
7//输出>> abcde
8 }
1.2 strncpy() 部分复制
原型: char* strncpy(char* dest, char* src, int size_tn);
功能:将字符串src中最多n个字符复制到字符数组dest中(ta并不像strcpy⼀样遇到NULL才停⽌复制,⽽是等凑够n个字符才开始复制),返回指向dest的指针
说明:如果n > dest串长度,dest栈空间溢出产⽣崩溃异常
src串长度 <= dest串长度
如果n=(0, src串长度),src的前n个字符复制到dest中
但是由于没有NULL字符,所以直接访问dest串会发⽣栈溢出的异常情况
这时,⼀般建议采取memset将dest的全部元素⽤null填充
如果n = src串长度,与strcpy⼀致
如果n = dest串长度,[0,src串长度]处存放于desk字串,(src串长度, dest串长度]处存放NULL
src串长度 > dest串长度
如果n = dest串长度,则dest串没有NULL字符,会导致输出会有乱码
1int main()
2 {
3char src[]="SWT is so great! We should % him everyday.";
4char dest[100];
5
6    memset(dest,0,sizeof(dest));
7    strncpy(dest,src,10);
8    printf("%s\n",dest);
9//输出>>SWT is so
10
11    memset(dest,0,sizeof(dest));
12    strncpy(dest,src,sizeof(src));
13    printf("%s\n",dest);
14//输出>>SWT is so great! We should % him everyday.
15
16    memset(dest,0,sizeof(dest));
17    strncpy(dest,src,sizeof(dest));
18    printf("%s\n",dest);
19//输出>>SWT is so great! We should % him everyday.
20
21char des[10];
22    memset(des,0,sizeof(des));
23    strncpy(des,src,sizeof(src));
24    printf("%s\n",des);
25//exe停⽌⼯作
26 }
2.0 字符串合并
2.1 strcat() 完全合并
原型: char* strcat(char* dest, char* src);
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’
返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有⾜够的空间来容纳src的字符串1int main()
2 {
3char src[]="OI!";
4char dest[]="We like ";
5    strcat(dest,src);
6    printf("%s",dest);
7//输出>>We like OI!
8 }
2.2 strncat() 部分合并
原型: char* strncat(char* dest, char* src, int n);
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的 ‘\0’)并添加 ‘\0’返回指向dest的指针
说明: src 和 dest所指内存区域不可以重叠且dest必须有⾜够的空间来容纳src的字符串1int main()
2 {
3char src[]="Please login in here!#$%@$@%@#$@%";
4char dest[]="Welcome to the largest talking room of SLYZ! ";
5    strncat(dest,src,21);
6    printf("%s",dest);
7//输出>>Welcome to the largest talking room of SLYZ! Please login in here!
8 }
3.0 字符串查
3.1 strchr() 查字符
原型: char* strchr(char* s, char c);
功能:查字符串s中⾸次出现字符c的位置
说明:返回⾸次出现c的位置的指针,如果s中不存在c则返回NULL
1int main()
2 {
3char src[]="Can you find some thing?";
4int t=strchr(src,'?')-src;
5    printf("%d",t);
6//输出>>23
7 }
3.2 strchr() 查字符串
原型: char* strstr(char* haystack, char* needle);
功能:从字符串haystack中寻needle第⼀次出现的位置(不⽐较结束符”\0”)
说明:返回指向第⼀次出现needle位置的指针,如果没到则返回NULL
1int main()
2 {
3char src[]="Can you find some thing?";
4int t=strstr(src,"thing")-src;
5    printf("%d",t);
6//输出>>18
7 }
4.0 字符串⽐较
字符串复制函数4.1 strcmp() 区分⼤⼩写
原型: int strcmp(char* s1, char* s2);
功能:⽐较字符串s1和s2,区分⼤⼩写
说明:当s1 < s2时,返回值<0;
   当s1 = s2时,返回值=0;
   当s1 > s2时,返回值>0。
1int main()
2 {
3char src[]="Hello!";
4char dest[]="hello!";
5if (!strcmp(src,dest)) printf("SAME");
6else printf("DIFFERENT");
7//输出>>DIFFERENT
8 }
4.2 stricmp() 不区分字母的⼤⼩写
原型: int stricmp(char* s1, char* s2);
功能:⽐较字符串s1和s2,但不区分字母的⼤⼩写
说明:当s1 < s2时,返回值<0;
   当s1 = s2时,返回值=0;
   当s1 > s2时,返回值>0。
1int main()
2 {
3char src[]="Hello!";
4char dest[]="hello!";
5if (!stricmp(src,dest)) printf("SAME");
6else printf("DIFFERENT");
7//输出>>SAME
8 }
4.3 strncmp() 部分⽐较,区分字母的⼤⼩写
原型: int strncmp(char* s1, char* s2, int n);
功能:⽐较字符串s1和s2的前n个字符
说明:当s1 < s2时,返回值<0;
   当s1 = s2时,返回值=0;
   当s1 > s2时,返回值>0。
1int main()
2 {
3char src[]="A APPLE A DAY.";
4char dest[]="a apple a day.";
5if (strncmp(src,dest,8)==0) printf("SAME");
6else printf("DIFFERENT");
7//输出>>DIFFERENT
8 }
4.4 strnicmp() 部分⽐较,不区分字母的⼤⼩写
原型: int strnicmp(char* s1, char* s2, int n);
功能:⽐较字符串s1和s2的前n个字符但不区分⼤⼩写
说明:当s1 < s2时,返回值<0;
   当s1 = s2时,返回值=0;
   当s1 > s2时,返回值>0。
1int main()
2 {
3char src[]="A APPLE A DAY.";
4char dest[]="a apple a day.";
5if (strnicmp(src,dest,8)==0) printf("SAME");
6else printf("DIFFERENT");
7//输出>>SAME
8 }
5.0 字符串转化
5.1 strupr() ⼩写转⼤写
原型: char* strupr(char* s);
功能:将字符串s转换为⼤写形式
说明:只转换s中出现的⼩写字母,不改变其它字符
返回指向s的指针
1int main()
2 {
3char s[]="Let's % SWT together!";
4    strupr(s);
5    printf("%s",s);
6//输出>>LET'S % SWT TOGETHER!
7 }
5.2 strlwr() ⼤写转⼩写
原型: char* strlwr(char* s);
功能:将字符串s转换为⼩写形式
说明:只转换s中出现的⼤写字母,不改变其它字符
返回指向s的指针
1int main()
2 {
3char s[]="Let's % SWT together!";
4    strlwr(s);
5    printf("%s",s);
6//输出>>let's % swt together!
7 }
5.3 strrev() 字符串倒置
原型: char* strrev(char* s);
功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符”\0”)说明:返回指向颠倒顺序后的字符串指针
1int main()
2 {
3char s[]="!uoy kcor lliw eW";
4    strrev(s);
5    printf("%s",s);
6//输出>>We will rock you!
7 }
5.4 strset() 字符设置
原型: char* strset(char* s, char c);
功能:把字符串s中的所有字符都设置成字符c
说明:返回指向s的指针
1int main()
2 {
3char s[]="(!@&*#$^*@#&^(!@#*))";
4    strset(s,'%');
5    printf("%s",s);
6//输出>>%%%%%%%%%%%%%%%%%%%%
7 }