• c语言字符函数和字符串函数


    1. 字符分类函数

    字符分类函数是用来判断一个字符的类型的函数。在C语言中,有一组标准的字符分类函数可以使用,包括:

    • isalnum: 判断字符是否为字母或数字
      • isalnum()是一个字符串方法,用于检查字符串是否只包含字母和数字。如果字符串只包含字母和数字,则返回True(非0),否则返回False(0)(以下函数同理)。
    • isalpha: 判断字符是否为字母
    • isdigit: 判断字符是否为数字
    • islower: 判断字符是否为小写字母
    • isupper: 判断字符是否为大写字母
    • isspace: 判断字符是否为空白字符(如空格、制表符等)

    以下是使用isalnum()方法的示例代码(其他字符分类函数代码同理):

    #include 
    #include 
    
    int main() 
    {
        char ch = 'A';
    
        if (isalpha(ch)) 
        {
            printf("%c 是一个字母\n", ch);
        } 
        else 
        {
            printf("%c 不是一个字母\n", ch);
        }
        
        return 0;
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 输出结果
    A 是一个字母
    
    • 1

    2. 字符转换函数

    字符转换函数用来在不同字符类型之间进行转换。常用的字符转换函数有:

    • tolower: 将大写字母转换为小写字母
    • toupper: 将小写字母转换为大写字母
      • 在C语言中,tolower函数用于将大写字母转换为小写字母。它接受一个字符作为参数,并返回转换后的结果。

    以下是一个示例代码,演示如何使用tolower函数(toupper同理):

    #include 
    #include 
    
    int main() 
    {
        char ch = 'A';
        char lowerCh;
    
        lowerCh = tolower(ch);
    
        printf("转换前的字符为: %c\n", ch);
        printf("转换后的字符为: %c\n", lowerCh);
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    输出结果为:

    转换前的字符为: A
    转换后的字符为: a
    
    • 1
    • 2

    在上面的例子中,我们将字符A传递给tolower函数,它将其转换为小写字母a并将结果赋值给lowerCh。然后,我们使用printf函数分别打印原始字符和转换后的字符。

    请注意在使用tolowertoupper函数之前,必须包含头文件


    这些函数只对字母字符有效,对其他字符不做修改。

    3. strlen的使用和模拟实现

    strlen函数用来计算一个字符串的长度,即字符串中字符的个数(不包括结尾的空字符’\0’)。在C语言中,可以使用strlen函数直接获取字符串的长度,例如:

    char str[] = "Hello";
    int len = strlen(str);
    printf("%d",len);
    
    • 1
    • 2
    • 3
    • 输出结果
      在这里插入图片描述

    strlen的模拟实现可以通过循环计算字符个数来实现:

    size_t strlen(const char* str) 
    {
        size_t len = 0;
        while (str[len] != '\0') 
        {
            len++;
        }
        return len;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4. strcpy的使用和模拟实现

    strcpy函数用来将一个字符串复制到另一个字符串中。在C语言中,可以使用strcpy函数直接进行字符串复制,例如:

    char source[] = "Hello";
    char destination[10];
    strcpy(destination, source);
    printf("%s", destination);
    
    • 1
    • 2
    • 3
    • 4
    • 输出结果
      在这里插入图片描述

    strcpy的模拟实现可以通过循环逐个字符复制来实现:

    char* strcpy(char* destination, const char* source) 
    {
        char* dest = destination;
        while ((*dest++ = *source++) != '\0') 
        {
            // 拷贝字符直到遇到结尾的空字符
        }
        return destination;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5. strcat的使用和模拟实现

    strcat函数用来将一个字符串追加到另一个字符串的末尾。在C语言中,可以使用strcat函数直接进行字符串追加,例如:

    char str1[15] = "Hello";
    char str2[] = " World";
    strcat(str1, str2);
    printf("%s",str1);
    
    • 1
    • 2
    • 3
    • 4
    • 输出结果
      在这里插入图片描述

    strcat的模拟实现可以通过先找到第一个字符串的结尾位置,然后逐个字符追加来实现:

    char* strcat(char* destination, const char* source) 
    {
        char* dest = destination;
        while (*dest != '\0') 
        {
            dest++;
        }
        while ((*dest++ = *source++) != '\0') 
        {
            // 追加字符直到遇到结尾的空字符
        }
        return destination;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    6. strcmp的使用和模拟实现

    strcmp函数用来比较两个字符串的大小关系。在C语言中,可以使用strcmp函数直接进行字符串比较,例如:

    char str1[] = "abc";
    char str2[] = "def";
    int result = strcmp(str1, str2);
    
    if (result)
    	printf("相等");
    else
    	printf("不相等");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 输出结果
      在这里插入图片描述

    strcmp的返回值为整数,如果两个字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回负数;如果第一个字符串大于第二个字符串,则返回正数。

    strncmp函数的比较规则如下:

    1. 首先比较两个字符串的第一个字符,如果不相等,则返回它们之间的ASCII码差值(str1[i] - str2[i]),这个差值可以是正数、负数或零。
    2. 如果第一个字符相等,则继续比较下一个字符,重复上述步骤,直到比较完n个字符或者遇到不相等的字符。
    3. 如果比较完n个字符后,两个字符串完全相等,则返回0。
    4. 如果比较完n个字符后,两个字符串不相等,则返回第一个不相等字符的ASCII码差值(str1[i] - str2[i])。

    注意,如果某个字符串的长度小于n,则只比较到该字符串的末尾字符为止。另外,strncmp函数对于含有’\0’(空字符)的字符串也会进行比较,不会提前终止。

    strcmp的模拟实现可以通过逐个字符比较来实现:

    int strcmp(const char* str1, const char* str2) 
    {
        while (*str1 && (*str1 == *str2)) 
        {
            str1++;
            str2++;
        }
        return *(unsigned char*)str1 - *(unsigned char*)str2;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    7. strncpy函数的使用

    strncpy函数用来复制指定长度的部分字符串到目标字符串中。在C语言中,可以使用strncpy函数直接进行字符串复制,例如:

    char source[] = "Hello World";
    char destination[10];
    strncpy(destination, source, 5);
    printf("%s",destination);
    
    • 1
    • 2
    • 3
    • 4

    这个例子中,将source中的前5个字符(“Hello”)复制到destination中。

    • 输出结果
      在这里插入图片描述
      因为没有’\0’,所以后面输出的是随机值。

    8. strncat函数的使用

    strncat函数用来将指定长度的部分字符串追加到目标字符串的末尾。在C语言中,可以使用strncat函数直接进行字符串追加,例如:

    char str1[15] = "Hello";
    char str2[] = " World";
    strncat(str1, str2, 5);
    printf("%s",str1);
    
    • 1
    • 2
    • 3
    • 4

    这个例子中,将str2中的前5个字符(" World")追加到str1的末尾。

    • 输出结果
      在这里插入图片描述

    9. strncmp函数的使用

    strncmp函数用来比较两个字符串的前n个字符的大小关系。在C语言中,可以使用strncmp函数直接进行字符串比较,例如:

    char str1[] = "abc";
    char str2[] = "def";
    int result = strncmp(str1, str2, 2);
    if (result < 0) 
    {
        printf("str1 is less than str2\n");
    }
    else if (result > 0) 
    {
        printf("str1 is greater than str2\n");
    }
    else 
    {
        printf("str1 is equal to str2\n");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这个例子中,只比较str1str2的前两个字符(“ab"和"de”),结果为负数。

    • 输出结果
      在这里插入图片描述

    10. strstr的使用和模拟实现

    strstr函数用来在一个字符串中查找另一个字符串第一次出现的位置。在C语言中,可以使用strstr函数直接进行字符串查找,例如:

    char str[] = "Hello World";
    char* result = strstr(str, "World");
    printf("%p",result);
    
    • 1
    • 2
    • 3

    这个例子中,查找"World"在str中第一次出现的位置。

    • 输出结果
      在这里插入图片描述
      strstr的模拟实现可以通过两个循环嵌套来实现:
    char* strstr(const char* str, const char* substr) 
    {
        while (*str) 
        {
            const char* s1 = str;
            const char* s2 = substr;
            while (*s1 && *s2 && (*s1 == *s2)) 
            {
                s1++;
                s2++;
            }
            if (!*s2) 
            {
                return str;
            }
            str++;
        }
        return NULL;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    11. strtok函数的使用

    strtok函数用来将一个字符串分割成多个子字符串。在C语言中,可以使用strtok函数直接进行字符串分割,例如:

    char str[] = "Hello,World,!";
    char* token = strtok(str, ",");
    while (token != NULL) 
    {
        printf("%s\n", token);
        token = strtok(NULL, ",");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这个例子中,将str按逗号进行分割,输出三个子字符串(“Hello”,“World”,“!”)。

    • 输出结果
      在这里插入图片描述

    12. strerror函数的使用

    strerror函数用来将错误码转换成对应的错误信息字符串。在C语言中,可以使用strerror函数直接进行错误信息转换,例如:

    #include 
    #include 
    #include 
    
    int main() 
    {
        FILE* file = fopen("nonexistent.txt", "r");
        if (file == NULL) 
        {
            printf("Error: %s\n", strerror(errno));
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这个例子中,尝试打开一个不存在的文件,然后使用strerror函数将错误码转换成对应的错误信息字符串。

    • 输出结果
      在这里插入图片描述

    在使用字符串函数时需要加上头文件

  • 相关阅读:
    Sping.事务的传播特性
    Spring中反转控制与依赖注入
    linux操作命令
    小米AI实验室4篇论文入选语音技术顶会INTERSPEECH 2022
    webpack项目 index.html 根据不同的变量引入不同的js
    西门子精彩触摸屏SMART V3组态配方的具体方法示例
    linux驱动之ioctl详解
    彩虹桥架构演进之路-性能篇
    SystemVerilog学习 (6)——验证平台
    vb火车站售票管理系统设计与实现
  • 原文地址:https://blog.csdn.net/2301_81988400/article/details/136276492