C语言实现:从文件中提取连续数字并输出正整数
C语言实现:从文件中提取连续数字并输出正整数
本程序从文件 trans.in 中读取文本,提取出所有连续的数字字符,并将它们转换为正整数后输出到文件 trans.out 中。
程序功能:
- 读取文件内容
- 识别连续的数字字符
- 将连续数字字符转换为正整数
- 过滤掉正整数最高位的 '0'
- 将所有提取到的正整数输出到文件,以空格分隔,并在末尾添加回车符
C语言代码实现:
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *in = fopen('trans.in', 'r');
FILE *out = fopen('trans.out', 'w');
if (in == NULL || out == NULL) {
printf('文件打开失败!\n');
return 0;
}
char c;
int num = 0;
int flag = 0; // 标记是否正在读取数字
while ((c = fgetc(in)) != EOF) {
if (isdigit(c)) {
flag = 1;
num = num * 10 + c - '0';
} else {
if (flag) { // 如果之前正在读取数字
while (num >= 10 && num % 10 == 0) num /= 10; // 过滤掉最高位的0
fprintf(out, '%d ', num);
num = 0;
flag = 0;
}
}
}
if (flag) { // 处理最后一个数字
while (num >= 10 && num % 10 == 0) num /= 10;
fprintf(out, '%d', num);
}
fprintf(out, '\n');
fclose(in);
fclose(out);
return 0;
}
代码说明:
- 使用
isdigit(c)函数判断字符是否为数字 - 使用
flag变量标记是否正在读取一个连续的数字字符串 - 使用
num变量存储当前读取到的数字 - 使用循环和除法运算过滤掉数字最高位的 '0'
- 使用
fprintf()函数将结果输出到文件
示例输入 (trans.in):
df-23adfd56 2343?23dgjop00535
示例输出 (trans.out):
23 56 2343 23 535
原文地址: http://www.cveoy.top/t/topic/gl60 著作权归作者所有。请勿转载和采集!