程序设计大作业---获取正整数

【问题描述】

依序输出一个文件中所有连续数字组成的正整数。在文件中可能含有数字和非数字字符以及空格等,如:df-23adfd56 2343?23dgjop00535。要求将这些连续数字组成的正整数依次输出,并且要过滤掉连续数字最高位的0,不考虑负号。

【输入文件】

从当前目录下的trans.in文件中取得输入。

【输出文件】

将输出打印到当前目录下的trans.out文件中。输出文件中依次为各个连续数字组成的正整数,各整数之间用一个空格分隔。最后要输出一个回车符。

【输入样例】

若文件trans.in中内容为df-23adfd56 2343?23dgjop00535

【输出样例】

文件trans.out中内容为:

23 56 2343 23 535

扫描二维码关注公众号,回复: 1545156 查看本文章

【样例说明】

在文件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 ");
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zkd758/article/details/80634457
今日推荐