【问题描述】
依序输出一个文件中所有连续数字组成的正整数。在文件中可能含有数字和非数字字符以及空格等,如:df-23adfd56 2343?23dgjop00535。要求将这些连续数字组成的正整数依次输出,并且要过滤掉连续数字最高位的0,不考虑负号。
【输入文件】
从当前目录下的trans.in文件中取得输入。
【输出文件】
将输出打印到当前目录下的trans.out文件中。输出文件中依次为各个连续数字组成的正整数,各整数之间用一个空格分隔。最后要输出一个回车符。
【输入样例】
若文件trans.in中内容为df-23adfd56 2343?23dgjop00535
【输出样例】
文件trans.out中内容为:
23 56 2343 23 535
【样例说明】
在文件trans.in内容df-23adfd56 2343?23dgjop00535中有5个连续数字组成的正整数分别是
23 56 2343 23 535,其中不考虑第一个23前的负号,并且要去掉00535开头的两个0。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
FILE *f, *g;
int num[50], i, j, k;
char ch[50];
f = fopen("trans.in", "r");
g = fopen("trans.out", "w");
while (!feof(f)) {
fgets(ch, sizeof(ch), f);
}
for (i = 0; i < strlen(ch); i++) {
if (ch[i] > '0'&&ch[i] <= '9') {
while (ch[i] >= '0'&&ch[i] <= '9') {
fprintf(g, "%c", ch[i++]);
}
fprintf(g, " ");
}
else if (ch[i] == '0') {
int t = i + 1;
while (ch[t] >= '0'&&ch[t] <= '9') {
t++;
}
if (ch[t - 1] == '0') {
fprintf(g, "0 ");
}
}
}
}