字符串函数
1.strlen与sizeof(返回字符串的长度,不包括结尾的0) size_t strlen(const char *s)
#include <stdio.h> int getLength(char *s) { int cnt = 0; while (s[cnt] != '\0') { cnt++; } return cnt; } int main() { char line[] = "Hello"; printf("getLength=%lu\n",getLength(line)); printf("strlen=%lu\n",strlen(line));// 不算结尾的0的长度,,如果要写在函数里呢,就是不传数组长度进去的时候 printf("sizeof=%lu\n",sizeof(line));// 算结尾的0的长度 return 0; }
2.strcmp比较两个字符串,则是不可能修改字符串,所以是const修饰字符串,比较内存的内容
#include <stdio.h> int main() { char s1[] = "Hello"; char *s2 = "Hello";//证明数组和指针是一样的 printf("%d\n",strcmp(s1,s2));//结果是0 printf("%p %p\n",s1,s2);//000000000061FE12 0000000000404000 但是指针所指向的地方不一样呀 return 0; }
3.strcpy(拷贝功能)------char* strcpy(char *restrict dst,const char * restrict src) restrict表示不能有重叠的部分
常规操作:char *dst = (char*)malloc(strlen(src)+1)//strlen只是内容,因此+1获得内存长度,先申请出一块空间
strcpy(dst,src);//再拷贝
#include <stdio.h> char *mycpy(char *dst,char *src) { int idx = 0; while (src[idx]) { dst[idx]=src[idx]; idx++; } dst[idx] = '\0'; // char *ret = dst;//第二种方法:指针方法 // while (*src != '\0') { // *dst++ = *src++; // } // *dst = '\0'; return dst; } int main() { char s1[]="abc"; char s2[]="abc"; char s3[10]; //strcpy(s3,s2); mycpy(s3,s2); printf("%s",s3); }
4.strchr(查找功能)--------strchr(s,'l'),可以从左边找也可以从右边找
#include <stdio.h> int main() { char s[]="hello"; char *p = strchr(s,'l'); p = strchr(p+1,'l'); printf("%p\n",p); printf("%s\n",p); }
上面打印出来的是找到字符后面的打印
下面是打印的是找到字符前面的打印,,这些返回值的意思就是char型指针
查找字符串中的字符串:char *strstr(const char *s1,const char *s2)
大小写不敏感的查找字符串:char *strstr(const char *s1,const char *s2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了