C语言字符串处理函数汇总

包含头文件
#include <string.h>

字符串拷贝函数

strcpy 函数

函数原型 :
char *strcpy(char *dest, const char *src)
描述 :
        把 src 所指向的字符串复制到 dest
返回值 :
        该函数返回一个指向最终的目标字符串 dest 的指针。
备注
        如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况

strncpy 函数

函数原型 :
char *strncpy(char *dest, const char *src, size_t n)
描述 :
        把 src 所指向的字符串复制到 dest ,最多复制 n 个字符。
返回值 :
        该函数返回最终复制的字符串。
备注
        当 src 的长度小于 n 时, dest 的剩余部分将用空字节填充

strdup 函数

函数原型 :
char * strdup(const char *s);
描述 :
        strdup()会先用 maolloc() 配置与参数 s 字符串相同的空间大小,然后将参数 s 字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用 free() 来释放。
返回值 :
        返回一字符串指针,该指针指向复制后的新字符串地址。若返回 NULL 表示内存不足
备注
        使用完一定要 free() 释放内存

字符串比较函数

strcmp 函数

函数原型 :
int strcmp(const char *str1, const char *str2)
描述 :
        把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
返回值 :
        如果返回值小于 0 ,则表示 str1 小于 str2
        如果返回值大于 0 ,则表示 str1 大于 str2
        如果返回值大于 0 ,则表示 str1 大于 str2
备注
        无

strncmp 函数

函数原型 :
int strncmp(const char *str1, const char *str2, size_t n)
描述 :
        把 str1 str2 进行比较,最多比较前 n 个字节。
返回值 :
        如果返回值小于 0 ,则表示 str1 小于 str2
        如果返回值大于 0 ,则表示 str1 大于 str2
        如果返回值大于 0 ,则表示 str1 大于 str2
备注
        无

字符串连接函数

strcat 函数

函数原型 :
char *strcat(char *dest, const char *src)
描述 :
        把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
返回值 :
        该函数返回一个指向最终的目标字符串 dest 的指针。
备注
        无

strncat 函数

函数原型 :
char *strncat(char *dest, const char *src, size_t n)
描述 :
        把 src 所指向的字符串前 n 个字符追加到 dest 所指向的字符串的结尾。
返回值 :
        该函数返回一个指向最终的目标字符串 dest 的指针。
备注

        无

计算字符串长度函数

函数原型 :
size_t strlen(const char *str)
描述 :
        计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
返回值 :
        该函数返回字符串的长度。
备注
        无

字符串检索函数

strchr 函数

函数原型 :
char *strchr(const char *str, int c)
描述 :
        在参数 str 所指向的字符串中搜索第一次出现字符 c (一个无符号字符)的位置。
返回值 :
        该函数返回在字符串 str 中第一次出现字符 c 的地址,如果未找到该字符则返回 NULL
备注
        无

strcspn 函数

函数原型 :
size_t strcspn(const char *str1, const char *str2)
描述 :
        检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。
返回值 :
        该函数返回 str1 开头连续都不含字符串 str2 中字符的字符数
备注
        无

strerror 函数

函数原型 :
char *strerror(int errnum)
描述 :
        从内部数组中搜索错误号 errnum ,并返回一个指向错误消息字符串的指针。
返回值 :
        该函数返回一个指向错误字符串的指针,该错误字符串描述了错误 errnum
备注
        strerror 生成的错误字符串取决于开发平台和编译器。
示例
int main ()
{
    FILE *fp;
    fp = fopen("file.txt","r");
    if( fp == NULL )
    {
        printf("Error: %s\n", strerror(errno));
    }
    return(0);
}

strrchr 函数

函数原型 :
char *strrchr(const char *str, int c)
描述 :
        在参数 str 所指向的字符串中搜索最后一次出现字符 c (一个无符号字符)的位置。
返回值 :
        该函数返回 str 中最后一次出现字符 c 的地址。如果未找到该值,则函数返回一个空指针。
备注
        无

strspn 函数

函数原型 :
size_t strspn(const char *str1, const char *str2)
描述 :
        检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。
返回值 :
        该函数返回 str1 中第一个不在字符串 str2 中出现的字符下标。
备注
        无

strstr 函数

函数原型 :
char *strstr(const char *haystack, const char *needle)
描述 :
        在字符串 haystack 中查找第一次出现字符串 needle (不包含空结束字符)的地址。
返回值 :
        该函数返回在 haystack 中第一次出现 needle 字符串的地址,如果未找到则返回 null
备注
        无

strtok 函数

函数原型 :
char *strtok(char *str, const char *delim)
描述 :
        strtok()用来将字符串分割成一个个片段。参数 str 指向欲分割的字符串,参数 delim 则为分割字符串,当 strtok() 在参数 str 的字符串中发现到参数 delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时, strtok() 必需给予参数 str 字符串,往后的调用则将参数 str 设置成 NULL 。每次调用成功则返回下一个分割后的字符串指针。
返回值 :
        返回下一个分割后的字符串指针,如果已无从分割则返回 NULL.
备注
        无
示例:
int main ()
{
    char str[80] = "This is-www.runoob.com-website";
    const char s[2] = "-";
    char *token;
    /* 获取第一个子字符串 */
    token = strtok(str, s);
    /* 继续获取其他的子字符串 */
    while( token != NULL ) {
        printf( "%s\n", token );
        token = strtok(NULL, s);
    }
    for (int i = 0; i < 34;i++)
        printf("%c", str[i]);
    printf("\n");
    return(0);
}
打印结果:

 strspn 函数

函数原型 :
size_t strspn(const char *str, const char * accept);
描述 :
        strspn() 从参数 str 字符串的开头计算连续的字符,而这些字符都完全是 accept 所指字符串中的字符。简单的说,若 strspn() 返回的数值为 n ,则代表字符串 str 开头连续有 n 个字符都是属于字符串 accept 内的字符。
返回值 :
        返回字符串 str 开头连续包含字符串 accept 内的字符数目。所以,如果 str 所包含的字符都属于 accept ,那么返回 str 的长度;如果 str 的第一个字符不属于 accept ,那么返回0。
备注
        检索的字符是区分大小写的。函数 strcspn() 的含义与 strspn() 相反,可以对比学习。

strsep 函数

函数原型 :
char *strsep(char **stringp,const char *delim)
描述 :
        分解字符串为一组字符串。从 stringp 指向的位置起向后扫描,遇到 delim 指向的字符串中的字符后,将此字符替换为“\0” ,返回 stringp 指向的地址。它适用于分割 关键字 在两个字符串之间只“ 严格出现一次 的情况。
返回值 :
        函数返回分割后的第一个字符串。函数执行的过程,是在 *stringp 中查找分割符,并将其替换为“\0” ,返回分割出的第一个字符串指针 ( NULL 表示到达字符串尾),并更新 *stringp指向下一个字符串
备注
        不要把待检索的字符串的地址传递给第一个参数,应该定义一个指针去操作,如下例子:
示例
int main()
{
    char * const delim="/;";
    char str[]="some/splite;string";
    char *token,*cur=str;
    while(token=strsep(&cur,delim))
    {
        printf("%s %s %s\n",token,cur,str);
    } 
    return 0; 
}
打印输出
解释说明
        可以看到 strsep 函数会去检索到 str 中出现的 delim 中的字符然后将它替换成结束符,接着 cur 会指向替换后的下一个字符位置。

字符检索函数 

头文件:
#include <ctype.h>

字符串转换函数

头文件:
#include <stdlib.h>

字符串转整形 atoi

函数原型 :
int atoi(const char *str)
long atol(const char *nptr);
long long atoll(const char *nptr);
描述 :
        把参数 str 所指向的字符串转换为一个整数 / 长整形 / 长长整形。
返回值 :
        该函数返回转换后的整数/ 长整数 / 长长整数,如果没有执行有效的转换,则返回零。
备注
        无

字符串转浮点型 atof

函数原型 :
double atof(const char *str)
描述 :
        把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
返回值 :
        函数返回转换后的双精度浮点数,如果没有执行有效的转换,则返回零(0.0 )。
备注
        无
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值