字符串操作相关函数(C语言)

目录 

头文件

strlen

strcpy

strcat

strcmp

strchr

strstr

atoX

strtok

sprintf

sscanf

头文件

        string.h

strlen

作用:测量字符串长度

语法:

size_t strlen(const char *s);
    参数:
        要测量的字符串(必须是一个以空字符结尾的字符数组或字符指针。)
    返回值
        长度
    注意:
        测量的长度不包括\0和空字符

strcpy

作用: 拷贝字符串(深拷贝)

语法:

char *strcpy(char *dest, const char *src);
    参数:
        dest:目标位置
        src:资源位置
    返回值:
        就是目标位置
    作用:
        将src中的内容赋值到dest中

扩展

char *strncpy(char *dest,const char *src, size_t n);
    参数:
        dest:目标位置
        src:资源位置
        n:拷贝的字节数
    返回值:
        就是目标位置

深拷贝:

        拷贝的是地址,修改原数组中的数据,拷贝后的数组中的数据也会改变

浅拷贝:

        拷贝的是内容,修改原数组中的数据,不会影响到拷贝后的数组

strcat

作用: 追加

语法:

char *strcat(char *dest, const char *src);
    参数:
        dest:目标位置
        src:资源位置
    作用:将src的内容追加到dest的尾部

扩展

char *strncat(char *dest, const char *src, size_t n);
    参数:
        dest:目标位置
        src:资源位置
        n:追加的字节数
    作用:将src的内容的前n个字节追加到dest的尾部

注意:

        使用该函数需注意目标位置的内存大小要足够

strcmp

作用: 比较两个字符串字符串内容是否相同

语法:

int strcmp(const char *s1, const char *s2);
    参数:
        s1:字符串1
        s2:字符串2
    返回值:
        0相同                非0不同

strchr

作用:查询单个字符首次出现的位置

语法:

char *strchr(const char *s,char c);
    作用:
        在s中查询c第一次出现的位置
    参数:
        s:被查找的字符串
        c:要查找的字符
    返回值:
        c第一次出现的位置的地址
        如果c不存在则返回NULL

扩展:在s中查询c最后一次出现的位置

char *strrchr(const char *s, char c);

strstr

作用:查找指定字符串出现的位置

语法:

char *strstr(const char *haystack, const char *needle);
    参数:
        haystack:被查找的字符串
        needle:要查找的字符串
    返回值:
        查找到的字符串第一次出现的位置
        如果不存在返回NULL

atoX

作用: 字符串转数字

语法:

int atoi(const char * p);

        将字符串型的整数,转换为int

int atol(const cahr * p);

        将字符串型的整数,转换为long

double atof(const char * p);

        将字符串型的浮点数,转换为double

strtok

作用:切割字符串

语法:

char *strtok(char *str, const char *delim);
    参数:
        str:需要进行切割的字符串(前者)
        delim:以那些元素切割,也是数组(后者)
    返回值:
        切割后的字符串

注意:

        每调用一次该函数,切割一次

        第一次切割后,切割上一次剩余的字符串,str填NULL

以下为一个切割字符串案例

//str1是要进行切割的字符串
char * str1 = {"12345./abc.dfdf]e"};
//str2是切割元素,要以那些元素进行切割
char * str2 = {"./]"};
//创建一个指针数组用来存储切割后的字符串
char ** str = (char**)calloc(4,sizeof(char*));
//第一次切割
str[0] =  strtok(str1,str2);
int x = 1;
//进入循环
while(1)
{
    str[x] = strtok(NULL,str2);
    //当str[i]为空时表示切割完毕,退出循环
    if(str[x] == NULL)
    {
        break;
    }
    //x为指针数组的下标
    x++;
}

sprintf

作用:组包

将多个数据按照指定格式组装成字符串

sprintf(str,格式,&数据1,&数据2, ...);

语法:

int sprintf(char * str,const char *format, ...);
作用:
        给str指向的内存中写入指定内容,

        format格式化字符串,

        ...替换占位符的值

例:

sprintf(str,"%s省%s市%s县\n","江苏","苏州","吴江");

作用:

        给字符串str中写入 江苏省苏州市吴江县\n 

sscanf

作用:解包

将字符串按照指定格式提取其中的内容
sscanf(str,格式,&数据1,&数据2, ...);

语法:

int sscanf(const char *str,const char *format, ...);
作用:
    从str中按format获取数据到...中


占位符:

        %d:只能取整数
        %2d:取两位整数,如果超过2位取两位,不足两位有几位取几位
        %*d:跳过所有整数
        %*2d:跳过两位整数

        %c:一次读取一个字符
        %2c:一次读取两个字符

        %s:遇空格,换行,\0读取结束

你可能感兴趣的:(c语言,开发语言)