C语言字符串分离:数字与字母

本程序实现一个函数 fun(char *s, char *s1, char *s2),将输入字符串 s 中的数字字符分离到字符串 s1 中,字母字符分离到字符串 s2 中。

分析:

需要遍历字符串 s 中的每个字符,判断是数字还是字母,然后将数字字符存入 s1,字母字符存入 s2。最后输出两个分离后的字符串。

代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void fun(char *s, char *s1, char *s2) {
    int i1 = 0, i2 = 0; // 记录 s1 和 s2 的下标
    while (*s != '\0') {
        if (isdigit(*s)) { // 是数字
            *(s1 + i1) = *s; // 将数字转换为数字字符
            i1++;
        } else if (isalpha(*s)) { // 是字母
            *(s2 + i2) = *s; // 将字母转换为字符字符串
            i2++;
        }
        s++; // 指针后移
    }
    *(s1 + i1) = '\0'; // 字符串结尾
    *(s2 + i2) = '\0';
}

int main() {
    char s[100], s1[100], s2[100];
    printf("请输入字符串:");
    gets(s); // 输入字符串
    fun(s, s1, s2); // 调用函数
    printf("数字字符串:%s\n", s1);
    printf("字母字符串:%s\n", s2);
    return 0;
}

注意:

本题中输入字符串使用了 gets 函数,该函数存在安全性问题,建议使用更安全的 fgets 函数。

改进建议:

  1. 可以使用 fgets 函数代替 gets 函数,以避免缓冲区溢出风险。
  2. 可以添加错误处理,例如判断输入的字符串是否为空或是否包含非数字和字母的字符。
  3. 可以使用更简洁的代码实现相同的功能,例如使用指针移动来完成字符的复制。

总结:

本程序演示了如何使用 C 语言实现字符串分离功能,并解释了代码的逻辑和细节。希望您能够从中学习到字符串处理、字符判断和指针操作的相关知识。

C语言字符串分离:数字与字母

原文地址: https://www.cveoy.top/t/topic/omaX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录