依序输出一个文件中所有连续数字组成的正整数。在文件中可能含有数字和非数字字符以及空格等如:df-23adfd56 2343?23dgjop00535。要求将这些连续数字组成的正整数依次输出并且要过滤掉连续数字最高位的0不考虑负号。从当前目录下的transin文件中取得输入。将输出打印到当前目录下的transout文件中。输出文件中依次为各个连续数字组成的正整数各整数之间用一个空格分隔。最后要输出一
#include <stdio.h> #include <ctype.h>
int main() { FILE *fp_in, *fp_out; char ch; int num = 0, flag = 0; // flag用于标记是否正在读取数字 fp_in = fopen("trans.in", "r"); fp_out = fopen("trans.out", "w"); if (fp_in == NULL || fp_out == NULL) { printf("文件打开失败!"); return 0; } while ((ch = fgetc(fp_in)) != EOF) { if (isdigit(ch)) { if (num == 0 && ch == '0') { continue; // 过滤掉连续数字最高位的0 } num = num * 10 + ch - '0'; flag = 1; } else { if (flag) { fprintf(fp_out, "%d ", num); // 输出数字 num = 0; flag = 0; } } } if (flag) { // 处理最后一个数字 fprintf(fp_out, "%d", num); } fprintf(fp_out, "\n"); // 输出回车符 fclose(fp_in); fclose(fp_out); return 0;
原文地址: http://www.cveoy.top/t/topic/d5mo 著作权归作者所有。请勿转载和采集!