字符串函数

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)

 

posted @   我们都不是哈士奇  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示