字符串常见操作

120 阅读2分钟

字符串操作

字符串相关函数:

  • putchar:

    1. int getchar(int c);
    2. 向标准输出写一个字符
    3. 返回写了几个字符,EOF(-1)表示写失败
  • getchar:

    1. int getchar(void);
    2. 从标准输入读入一个字符
    3. 返回类型是int是为了返回EOF(-1)
  • scanf

  • printf

使用前记得#include <string.h>

  • strlen:

    1. int strlen(const char *s);
    2. 返回s字符串长度(不包括结尾的0)
int mylen(const char *s)//定义const是因为不想在函数里面改变数组
{
    int index=0;
    while(s[index]!='\0'){
        index++;
    }
    return index;
}
  • strcmp

    1. int strcmp(const char *s1,const char *s2);
    2. 比较两个字符串,返回0表示两个数组长度相等,-多少表示在不相等那个位数s1比s2小多少,+多少表示在不相等那个位数s1比s2大多少
int mycmp(const char *s1,const char *s2)//当作数组处理
{
    int index=0;
    while(s1[index]==s2[index]&&s1[index]!='\0'){
        //if(s1[index]!=s2[index]){
            //break;
        //}else if(s1[index]='\0'){
            //break;
        //}
        index++;
    }
    return s1[index]-s2[index];
}
int mycmp(const char *s1,const char *s2)//当作指针处理
{
    while(*s1==*s2&&*S1!='\0'){
        s1++;
        s2++;
    }
    return *s1-*s2;
}
  • strcpy

    1. char *strcpy(char *restrict dst,const char *restrict src);
    2. 把src的字符串拷贝到dst
    3. restrict表示src和dst不重叠(多线程将任务划分所以不能重叠否则会产生严重后果)
    4. 返回的是dst的地址
char *mycpy(char *dst,const char *src)//当作数组处理
{
    int index=0;
    while(src[index]){
        dst[index]=src[index];
        index++;
    }
    dst[index]='\0';
    return dst;
}
char *mycpy(char *dst,const char *src)//当作指针处理
{
    char *ret=dst;
    while(*dst++=*src++);
    *dst='\0';
    return ret;
}
  • strchr&&strrchr(字符串中找字符)

    1. char *strchr(const char *s,int c);(返回c后面的字符串(从左到右))
    2. char *strrchr(const char *s,int c);(返回c后面的字符串(从右到左))
    3. 返回的是字符所在的地址
    4. 返回NULL表示没有找到
int main()
{
    char a[]="hello";
    char *p=strchr(a,'l');
    p=strchr(p+1,'l');
    printf("%s\n",p);//输出‘lo’(即找到第二个l之后的字符串)
    return 0;
}
int main()
{
    char a[]="hello";
    char *p=strchr(a,'l');
    char c=*p;
    *p='\0';
    char *t=(char *)malloc(strlen(a)+1);
    strcpy(t,a);
    printf("%s\n",t);//输出‘he’(即找到第一个l之前的字符串)
    *p=c;
    free(t);
    return 0;
}
  • strstr&&strcasestr(字符串中找字符串)