当前位置: 首页 > 文档资料 > C 语言程序设计 >

常用的字符串函数-1

优质
小牛编辑
138浏览
2023-12-01

常用的9个字符串C标准库函数

在面试或者工作过程中,我们经常需要处理字符串,这个时候就需要用到C标准库中字符串相关的函数,下面简单介绍一下常用的9个字符串处理函数。

1.strlen函数

size_t strlen ( const char * str );

求字符串长度函数,用于求C风格的字符串str的长度,size_t即是unsigned int类型。

2.strcpy函数

char * strcpy ( char * destination, const char * source );

拷贝字符串函数,将source所指向的字符串拷备到destination所指向的内存空间中。

3.strncpy函数

char * strncpy ( char * destination, const char * source, size_t num );

拷贝字符串函数,将source字符串的前num个字符拷备到destination所指向的内存空间中。

4.strcat函数

char * strcat ( char * destination, const char * source );

字符串追加函数,将source所指向的字符串追加到destination所指向的字符串的末尾。

#include <stdio.h>
#include <string.h>
void main()
{
    //区号 
    char areaNumber[5];
    //电话号码 
    char phoneNumber[12];
    int input;
    //分机号
    char extraNumber[5];
    //用来存储连接后的结果,需要初始化为0!
    char buffer[25] = {0};
    printf("请输入区号:");
    gets(areaNumber);
    printf("请输入电话号码:");
    gets(phoneNumber);
    printf("有分机号吗?(y/n)");
    input = getchar();
    //由于 getchar() 只读入一个字符,因此需要调用 fflush 来清除输入缓冲区中的换行符  
    fflush(stdin);
    if(input == 'y')
    {
        printf("请输入分机号:");
        gets(extraNumber);
        strcat(buffer, areaNumber);
        strcat(buffer, "-");
        strcat(buffer, phoneNumber);
        strcat(buffer, "-");
        strcat(buffer, extraNumber);
    }
    else
    {
        strcat(buffer, areaNumber);
        strcat(buffer, "-");
        strcat(buffer, phoneNumber);
    }
    printf("您的电话号码是 %s。\n", buffer);
}

5.strncat函数

char * strncat ( char * destination, constchar * source, size_t num );

字符串追加函数,将source所指向的字符串的前n个字符追加到destination所指向的字符串的末尾。

#include <stdio.h>
#include <string.h>
void main()
{
    char buf1[30];      //声明字符串数组,用于保存字符串buf1
    char buf2[30];      //声明字符串数组,用于保存字符串buf2
    printf("请输入第一个字符串:");
    gets(buf1);          //接收用户输入的字符串
    printf("请输入第二个字符串:");
    gets(buf2);
     //使用strncat()函数来对字符串进行拼接
    strncat(buf1, buf2, sizeof(buf1) - 1 - strlen(buf1));
    printf("连接后的字符串是 %s。\n", buf1);
}

6.strcmp函数

int strcmp ( const char * str1, const char * str2 );

字符串比较函数,用于比较str1和str2所指向的两个字符串的大小。

#include <stdio.h>
#include <string.h>
void main()
{
    char username[100];  //定义存放用户名的字符数组
    char password[100];  //定义存放密码的字符数组
    printf("登录\n");
    printf("请输入用户名:");
    gets(username);       //获取用户输入的用户名
    printf("请输入密码:");
    gets(password);       // 获取用户输入的密码
    // 比较输入的用户名和密码是否正确
    if (!strcmp(password, "ILoveC") && (!strcmp(username, "user")))
    {
        printf("用户 %s 登录成功!\n", username);
    }
    else
    {
        printf("登录失败,请检查用户名或密码是否正确输入。\n");
    }
}

strncmp() 比较两个字符串中的前n个字符是否完全一致

#include <string.h>
#include<stdio.h>
void main()
{
    char* str1="abcdef";
    char* str2="abcdeg";
    //判断字符串str1和str2中的前5个字符是否相同
    if(!strncmp(str1,str2,5))
    {
        printf("str1和str2的前5个字符相同");
    }else
    {
        printf("str1和str2的前5个字符不同");
    }
}

7.strchr函数

char * strchr ( char * str, int character );

字符查找函数,查找character字符在str字符串中第一次出现的位置。

#include <stdio.h>
#include <string.h>
int getcount(char* str, char c)
{
    //存储找到的字符个数 
    int count = 0;
    //存储当前字符指针在字符串中的位置
    char* ptr = str;
    //获取第一次出现字符变量c值的指针位置
    while((ptr = strchr(ptr, c)) != NULL)
    {
        ++ptr;
        ++count;
    }
    return count;
}
void main()
{
    char str[6]= "abacad";   
    char c='a';
    count = getcount(str, (char)c);
    printf("字符 %c 在字符串中出现了 %d 次。\n", c, count);    
}

strrchr() 查找指定字符在指定字符串中最后一次出现的位置

8.strstr函数

char * strstr ( char * str1, const char * str2 );

子串查找函数,查找子字符串str2在字符串str1中第一次出现的位置。

#include <stdio.h>
#include <string.h>
void main()
{
    char str[10240];    //声明字符串数组,用于保存段落
    char word[1024];    //声明字符串数组,用于保存要查找的字符串
    char* ptr;
    printf("请输入要扫描的段落:");
    gets(str);
    printf("请输入要查找的单词:");
    gets(word);
    ptr = strstr(str, word); //搜索是否包含指定的字符串
    if(ptr == NULL)
    {
        printf("段落中不包含单词 %s。\n", word);
    }
    else
    {
        //得到检测出的字符串后20个字符
        if(strlen(ptr) >= 20)
        {
            ptr[20] = 0;
        }
        printf("单词出现在 %s 附近。\n", ptr);
    }
}

9.strtok函数

char * strtok ( char * str, const char * delimiters );

字符串分割函数,根据delimiters中的字符来分割字符串str。

以上是常用的9个常用的字符串处理函数,这次只做简单的介绍,后续我会继续详细介绍每一个函数并实现这里的每一个函数。

10. atoi函数

将一个数字字符串转换为对应的十进制数

#include <stdio.h>
#include <stdlib.h>
void main()
{
    char buf[20];
    int result;
    printf("请输入待转换的十进制数:");
    gets(buf);
    result = atoi(buf);
    printf("转换结果是 %d。\n", result);
}

11. itoa函数

将一个整数转换为字符串

#include <stdio.h>
#include <stdlib.h> 
void main()
{
    char buf[20];
    //用于保存八进制的转换结果 
    char number_8[20];
    //用于保存十进制的转换结果 
    char number_10[20];
    //用于保存十六进制的转换结果
    char number_16[20];
    int val;
    printf("请输入待转换的数:");
    gets(buf);
    val = atoi(buf);    //将输入的字符串表示的数字转换为整型
    //使用 itoa()函数进行转换 
    itoa(val, number_8, 8);
    itoa(val, number_10, 10);
    itoa(val, number_16, 16);
    printf("八进制下为 %s\n", number_8);
    printf("十进制下为 %s\n", number_10);
    printf("十六进制下为 %s\n", number_16);
}

12. sprintf()

将一个整数转换为字符串

sprintf(str, "%d", 100);