个人理解—字符串函数

        字符串是以指针指向开头‘\0’为结尾并连续存储的一种数据结构。与数组相比,字符串没有其中一个的元素,那就是长度。

        数组的长度需要自己给出,但字符串在定义时候没有长度定义这一说,都是以‘\0’为结尾作为字符串结束的标志。

        也就是说,在申请字符串时不用指定大小,而数组需要指定大小。

        常用的字符串处理函数存放在<string.h>中,常用的字符串处理函数有:

        ①void *memcpy(void *dest, const void *src, size_t n),从src复制n个字节到dest。但src与dest在内存区域不能存在重叠。

        ②void *memmove(void *dest, const void *src, size_t n) 从src复制n个字节到dest。src与dest在内存区域可以存在重叠。memxxx的函数可用在字符串数组中等,但strxxx函数只能使用在字符串中。

        ③int memcmp(const void *str1, const void *str2, size_t n)) str1与str2对比前n个字节的ascii值,当str1>str2返回>0的值,str1<str2返回<0,str1==str2返回=0。

        ④void *memset(void *str, int c, size_t n)  复制字符c到str字符串所指向的前n个字符(空格也算字符)。

        ⑤void *memchr(const void *str, int c, size_t n)  在字符串/参数指向的字符串str中的前n个字符串中第一次出现c的地方(c是一个无符号字符)在str前n个字符中找第一个出现c的地方。

        ⑥char *strcpy(char *dest, const char *src),将src中指向的字符串复制到dest中。

        ⑦char *strncpy(char *dest, const char *src, size_t n) 将src中的字符cp到dest中,最多cp n个字符,当src的长度<n时,用空格填充dest。

        ⑧char *strcat(char *dest, const char *src) 将src所指向的字符串追加到dest结尾。

        ⑨char *strncat(char *dest, const char *src, size_t n) 将src所指向的字符串追加到dest结尾,直到n字节长度为止。向dest追加src中n字节内容。

        ⑩int strcmp(const char *str1, const char *str2)对比str1与str2,当str1>str2 返回值>0,当str1<str2 返回值<0,当str1==str2 返回值等于0。

        ⑪int strncmp(const char *str1, const char *str2, size_t n) 对比str1与str2的前n个字符,str1与str2,当str1>str2 返回值>0,当str1<str2 返回值<0,当str1==str2 返回值等于0。

        关于xxxcmp返回值的问题,对比字符是逐个进行对比,当出现第一个不同时,会在当前位置出现str1-str2!=0的情况,该值为返回值。

       ⑫ char*strdup(const char*s) 。dest=strdup(str),将str cp给dest。strdup内容使用了malloc()函数,不需要返回字符串时用free()释放相应空间。

        ⑬char*strdup(const char*str, size_t n) 。dest=strdup(str,3)将str中的前3个字符给dest cp过去。

        ⑭char *strchr(const char *str, int c),查出str中第一次出现字符c的位置。

        ⑮char *strstr(const char *haystack, const char *needle) 在haystack中查找第一次出现字符串needle的位置,关于返回位置,不是返回1、2、3,而是返回要寻找的内容+原内容后面的内容。

        eg:str1="ABCDEFGH",str2=“DE”,返回值为“DEFGH"。

        ⑯char *strtok(char *str, const char *delim),分解字符串str为一组字符串,delim为分隔符。

        eg:

string str=”THIS-IS-OK“;
string delim="-";
string token=strok(str,delim);

while (token!=NULL){
    printf("%s\n",token);
    token=strok(NULL,delim);}  返回 THIS
                                    IS
                                    OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值