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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具