最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

短讯!字符串函数

来源:博客园


(资料图)

1.strlen与sizeof(返回字符串的长度,不包括结尾的0) size_t strlen(const char *s)

#include 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 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 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 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)

关键词: 大小写不敏感 常规操作 字符串函数