C语言提取文件中连续数字并去除前导零
C语言提取文件中连续数字并去除前导零
这篇文章提供了一个C语言程序,可以从文本文件中提取所有连续的数字序列,并将它们转换为正整数。程序会忽略前导零,例如 '00535' 会被转换为 '535'。程序从 'trans.in' 文件读取输入,并将结果输出到 'trans.out' 文件。
代码实现
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *fin, *fout;
fin = fopen('trans.in', 'r');
fout = fopen('trans.out', 'w');
char c;
int num = 0, flag = 0; // flag表示是否正在读数字
while ((c = fgetc(fin)) != EOF) {
if (isdigit(c)) { // 当前字符是数字
if (flag) { // 如果正在读数字,将数字加到num中
num = num * 10 + c - '0';
} else { // 如果还没开始读数字,标记开始读数字
flag = 1;
num = c - '0';
}
} else { // 当前字符不是数字
if (flag) { // 如果之前正在读数字,输出num
fprintf(fout, '%d ', num);
flag = 0;
num = 0;
}
}
}
if (flag) { // 如果最后一个字符是数字,输出num
fprintf(fout, '%d ', num);
}
fprintf(fout, '
'); // 输出回车符
fclose(fin);
fclose(fout);
return 0;
}
代码解释
- 程序首先打开输入文件 'trans.in' 和输出文件 'trans.out'。
- 然后,程序逐个字符读取输入文件,直到文件结束。
- 对于每个字符,程序会检查它是否是数字。
- 如果是数字,程序会将其添加到当前数字字符串的末尾。
- 如果不是数字,程序会检查当前是否正在读取数字字符串。
- 如果是,程序会将当前数字字符串转换为整数,并将其输出到输出文件。
- 最后,程序关闭输入文件和输出文件。
示例
输入文件 (trans.in):
df-23adfd56 2343?23dgjop00535
输出文件 (trans.out):
23 56 2343 23 535
原文地址: https://www.cveoy.top/t/topic/gl90 著作权归作者所有。请勿转载和采集!