• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++char类型函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap