C语言字符串分离:数字与字母
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 函数。
改进建议:
- 可以使用
fgets函数代替gets函数,以避免缓冲区溢出风险。 - 可以添加错误处理,例如判断输入的字符串是否为空或是否包含非数字和字母的字符。
- 可以使用更简洁的代码实现相同的功能,例如使用指针移动来完成字符的复制。
总结:
本程序演示了如何使用 C 语言实现字符串分离功能,并解释了代码的逻辑和细节。希望您能够从中学习到字符串处理、字符判断和指针操作的相关知识。
原文地址: https://www.cveoy.top/t/topic/omaX 著作权归作者所有。请勿转载和采集!