C从字符串里面提取连续2个以上的数字,不使用库函数
时间: 2024-12-29 15:29:36 浏览: 2
在C语言中,不使用库函数的情况下,你可以通过循环遍历字符串并逐字符分析来提取连续的数字。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <ctype.h> // 用于检查字符类型
void extract_numbers(char *str) {
int num[10], count = 0; // 数组用于存储连续的数字
char prev_char = '\0'; // 上一字符的备份,用于判断是否开始新的数字序列
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) { // 如果当前字符是数字
if (prev_char == '\0') { // 如果这是第一个数字
num[count++] = str[i] - '0'; // 将数字转换为整数并添加到数组
prev_char = str[i]; // 更新上一字符
} else {
num[count++] += str[i] - '0'; // 若不是第一个,则累加
}
} else { // 非数字字符,结束当前数字序列
if (count > 1) { // 检查是否有连续两个以上数字
printf("连续的数字串: %d", num[0]); // 输出结果
for (int j = 1; j < count; j++) {
printf(", %d", num[j]);
}
printf("\n");
count = 0; // 重置计数
}
prev_char = '\0'; // 重置上一字符
}
}
// 处理最后一个可能存在的数字序列
if (count > 1) {
printf("最后的连续数字串: %d", num[0]);
for (int j = 1; j < count; j++) {
printf(", %d", num[j]);
}
printf("\n");
}
}
int main() {
char input[] = "abc123def456ghijklm789";
extract_numbers(input);
return 0;
}
```
这个程序会在输入字符串"abc123def456ghijklm789"这样的例子中输出:
```
连续的数字串: 123, 456, 789
```
阅读全文