【问题描述】依序输出一个文件中所有连续数字组成的正整数。在文件中可能含有数字和非数字字符以及空格等如:df-23adfd56 2343?23dgjop00535。要求将这些连续数字组成的正整数依次输出并且要过滤掉连续数字最高位的0不考虑负号。【输入文件】从当前目录下的transin文件中取得输入。【输出文件】将输出打印到当前目录下的transout文件中。输出文件中依次为各个连续数字组成的正整数各
#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, "\n"); // 输出回车符 fclose(fin); fclose(fout); return 0;
原文地址: http://www.cveoy.top/t/topic/d5sq 著作权归作者所有。请勿转载和采集!