C++ char类型函数

1.0 字符串复制

1.1 strcpy() 完全复制

原型:char strcpy(char dest, char* src);

功能:把从src地址开始且含有 ‘\0’结束符的字符串复制到以dest开始的地址空间

返回指向dest的指针

说明: src 和 dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串

1 int main()
2 {
3     char src[]="abcde";
4     char 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字符,会导致输出会有乱码
1 int main()
 2 {
 3     char src[]="SWT is so great! We should % him everyday.";
 4     char 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 
21     char 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的字符串

1 int main()
2 {
3     char src[]="OI!";
4     char 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的字符串

1 int main()
2 {
3     char src[]="Please login in here!#$%@$@%@#$@%";
4     char 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

1 int main()
2 {
3     char src[]="Can you find some thing?";
4     int 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

1 int main()
2 {
3     char src[]="Can you find some thing?";
4     int 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。

1 int main()
2 {
3     char src[]="Hello!";
4     char dest[]="hello!";
5     if (!strcmp(src,dest)) printf("SAME");
6     else 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。

1 int main()
2 {
3     char src[]="Hello!";
4     char dest[]="hello!";
5     if (!stricmp(src,dest)) printf("SAME");
6     else 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。

1 int main()
2 {
3     char src[]="A APPLE A DAY.";
4     char dest[]="a apple a day.";
5     if (strncmp(src,dest,8)==0) printf("SAME");
6     else 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。

1 int main()
2 {
3     char src[]="A APPLE A DAY.";
4     char dest[]="a apple a day.";
5     if (strnicmp(src,dest,8)==0) printf("SAME");
6     else printf("DIFFERENT");
7     //输出>>SAME 
8 }

5.0 字符串转化

5.1 strupr() 小写转大写

原型: char strupr(char s);

功能: 将字符串s转换为大写形式

说明: 只转换s中出现的小写字母,不改变其它字符

返回指向s的指针

1 int main()
2 {
3     char 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的指针

1 int main()
2 {
3     char 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”)

说明: 返回指向颠倒顺序后的字符串指针

1 int main()
2 {
3     char 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的指针

1 int main()
2 {
3     char s[]="(!@&*#$^*@#&^(!@#*))";
4     strset(s,'%');
5     printf("%s",s);
6     //输出>>%%%%%%%%%%%%%%%%%%%%
7 }

参考链接:https://blog.csdn.net/wu_tongtong/article/details/79004668
原文链接: https://www.cnblogs.com/john1015/p/13141226.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/198969

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:00
下一篇 2023年2月12日 下午8:00

相关推荐