C语言中的字符串处理库函数介绍与实现

一、介绍

本文将主要介绍字符串处理库函数中的strlen、strcpy、strcat、strcmp、atoi等,主要由<string.h>头文件提供。

 

二、strlen函数:求字符串的长度

strlen

头文件

#include<string.h>

原型

size_t strlen(const char *s)

说明

求出s指向的字符串的长度(不包括null字符)。

返回值

返回s指向的字符串的长度。

size_t strlen(const char *s)
{
    size_t len = 0;
    while(*s++)
        len++;
    return len;
}

 

 

二、strcpy和strncpy函数:复制字符串

strcpy

头文件

#include<string.h>

原型

char *strcpy(char *s1,const char *s2);

说明

s2指向的字符串复制到s1指向的数组中。若s1s2指向的内存空间重叠,则作未定义处理。

返回值

返回s1的值。

strncpy

头文件

#include<string.h>

原型

char *strncpy(char *s1,const char *s2,size_t n);

说明

s2指向的字符串复制到s1指向的数组中。若s2的长度大于等于n,则复制到第n个字符为止。否则用null字符填充剩余部分。若s1s2指向的内存空间重叠,则作未定义处理。

返回值

返回s1的值。

char *strcpy(char *s1,const char *s2)
{
    char *tmp = s1;
    while(*s1++ = *s2++)
        ;
    return tmp;
}

char *strncpy(char *s1,const char *s2,size_t n)
{
    char *tmp = s1;
    while(n){
        if(!(*s1++ = *s2++)) break;  //遇到'\0'就结束循环
        n--; 
    }
    while(n--)
    *s1++ = '\0';  //用'\0'填充剩余部分
    return tmp; 
}

 

 

三、strcat和strncat函数:连接字符串

strcat

头文件

#include<string.h>

原型

char *strcat(char *s1,const char *s2)

说明

s2指向的字符串连接到s1指向的末尾。若s1s2指向的内存空间重叠,则作未定义处理

返回值

返回s1的值。

strncat

头文件

#include<string.h>

原型

char *strncat(char *s1,const char *s2,size_t n);

说明

s2指向的字符串连接到s1指向的数组末尾。若s2的长度大于n则截断超出部分。若s1s2指向的内存空间重叠,则作未定义处理。

返回值

返回s1的值。

char *strcat(char *s1,const char *s2)
{
    char *tmp = s1;
    while(*s1)
        s1++;  //前进到s1的末尾处 
    while(*s1++ = *s2++)
        ;  //循环复制直至遇到s2中的'\0' 
    return tmp;
}

char *strncat(char *s1,const char *s2,size_t n)
{
    char *tmp = s1;
    while(*s1)
        s1++;  //前进到s1的末尾处 
    while(n--)
        if(!(*s1++ = *s2++)) break;  //遇到'\0'就结束循环 
    *s1 = '\0';  //在s1的末尾插入'\0' 
    return tmp; 
}

 

 

四、strcmp和strncmp函数:比较字符串的大小关系

strcmp

头文件

#include<string.h>

原型

char *strcmp(char *s1,const char *s2)

说明

比较s1指向的字符串和s2指向的字符串的大小关系。

返回值

s1s2相等,则返回0;若s1大于s2,则返回正整数值,反之返回负整数值。

strncmp

头文件

#include<string.h>

原型

char *strncat(char *s1,const char *s2,size_t n);

说明

比较s1指向的字符的数组和s2指向的字符的数组的前n个字符的大小关系。

返回值

s1s2相等,则返回0;若s1大于s2,则返回正整数值,反之返回负整数值。

int *strcmp(char *s1,const char *s2)
{
    while(*s1 == *s2){
        if(*s1 == '\0')
            return 0;
        s1++;
        s2++;
    }
    return (unsigned char)*s1 - (unsigned char)*s2;
}

int *strncmp(char *s1,const char *s2,size_t n)
{
    while(n && *s1 && *s2){
        if(*s1 != *s2)
            return (unsigned char)*s1 - (unsigned char)*s2;
        s1++;
        s2++;
        n--;
    }
    if(!n) return 0;  //相等 
    if(*s1) return 1;  //s1 > s2
    
    return -1;    //s1 < s2
}

 

 

五、atoi、atol和atof函数:转换字符串

atoi

头文件

#include<stdlib.h>

原型

int atoi(const char *nptr)

说明

nptr指向的字符串转换为int型表示

返回值

返回转换后的值。结果值不能用int型表示时的处理未定义。

atol

头文件

#include<stdlib.h>

原型

long atol(const char *nptr)

说明

nptr指向的字符串转换为long型表示

返回值

返回转换后的值。结果值不能用long型表示时的处理未定义。

atof

头文件

#include<stdlib.h>

原型

double atof(const char *nptr)

说明

nptr指向的字符串转换为double型表示

返回值

返回转换后的值。结果值不能用double型表示时的处理未定义。

//使用atoi函数的例子

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char str[128];
    printf("请输入字符串:");
    scanf("%s",str);
    
    printf("转换为整数后为%d。\n",atoi(str));
    return 0;
 } 

 

转载于:https://www.cnblogs.com/OctoptusLian/p/9082296.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"C语言字符串处理库函数大全-简书"是一篇在简书上的教程,介绍C语言常用的字符串处理库函数。 该教程详细介绍C语言字符串操作的相关函数,包括库函数的使用方法和示例代码。通过该教程,读者可以学习到如何使用C语言字符串处理函数来进行字符串的复制、连接、比较、查找、截取等操作。 在这篇教程,读者可以了解到以下一些常见的字符串处理库函数: 1. strcpy:用于将一个字符串复制到另一个字符串。 2. strcat:用于将一个字符串连接到另一个字符串的末尾。 3. strlen:用于计算一个字符串的长度。 4. strcmp:用于比较两个字符串的大小。 5. strchr:用于在一个字符串查找指定字符的第一次出现位置。 6. strstr:用于在一个字符串查找指定子串的第一次出现位置。 7. strtok:用于将一个字符串按照指定的分隔符分割成多个子串。 8. strncpy:用于将指定长度的字符串复制到目标字符串。 9. strncmp:用于比较指定长度的两个字符串。 10. sprintf:用于将格式化的字符串输出到一个字符数组。 这些函数在C语言非常常用,并且对于字符串处理非常方便。通过学习和掌握这些字符串处理库函数,可以更加高效地完成C语言程序字符串操作。 总之,"C语言字符串处理库函数大全-简书"这篇文章提供了丰富的字符串处理库函数以及示例代码,对于C语言开发者来说是一个很好的参考和学习资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值