如何写一段从输入文件中分行读取输入的代码,并做到这段代码在C语言中的作用。

我写了这个代码。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char numbers[2001];
    char a[1000], b[1000];
    int int1, int2, i, n = 0;
    int sum, difference;

    fgets(numbers, sizeof(numbers), stdin);

    for (i = 0; i < 1000; i++)
    {
        if (numbers[i] != ' ')
        {
           a[i] = numbers[i];
        }
        else if (numbers[i] == ' ') {
            i += 1;
            b[n] = numbers[i];
            for (n = 1; n < 1000; n++)
                b[n] = numbers[n+i];
        }


    }

    int1=atoi(a);
    int2=atoi(b);

    sum = int1 + int2;
    difference = int1 - int2;
    printf("%d\n%d", sum, difference);

    return 0;
 }

但是在输入文件中,有好几行2个数字 我想让程序找出每行的和和差,并打印出来。

下面是一个输入的例子。

12 45
36 111
9 5
153 6

输出:

57
33
147
-75
14
4
159
147

解决方案:

你可以使用 sscanf 从字符串中获取数字,这就更简单了。

    FILE * fp = fopen("input.txt", "r");
    if (!fp) {
       return -1;
    }
    int i = 0;
    while(fgets(numbers, sizeof(numbers), fp)) {
        sscanf(numbers, "%d %d", &a[i], &b[i]);
        printf("sum = %d\n", a[i]+b[i]);
        printf("diff = %d\n", abs(a[i] - b[i]));
        i++;
    }

你应该改变 abcharint 为大数。

int a[1000], b[100];

因为我的代码中的数字是输入文件的一行,而且它的内容是2个数字,所以你可以减小它的大小。

char numbers[256]; // for example.

完整的用于测试。

int main(void) {
    char numbers[256];
    int a[1000], b[1000];
    FILE * fp = fopen("input.txt", "r");
    if (!fp) {
       return -1;
    }
    int i = 0;
    while(fgets(numbers, sizeof(numbers), fp) && i < 1000) {
        sscanf(numbers, "%d %d", &a[i], &b[i]);
        i++;
    }

    for(int j = 0, j < i; j++) {
        printf("%d %d\n", a[j], b[j]);
        printf("sum = %d\n", a[j]+b[j]);
        printf("diff = %d\n", abs(a[j] - b[j]));
    }
    return 0;
}

输入和输出。

#cat input.txt
12 45
36 111
9 5
153 6

./test
12 45
sum = 57
diff = 33
36 111
sum = 147
diff = 75
9 5
sum = 14
diff = 4
153 6
sum = 159
diff = 147

给TA打赏
共{{data.count}}人
人已打赏
未分类

改变ttk Combobox中更新的列表框的宽度。

2022-9-8 5:08:37

未分类

无法使用xpath选择元素。

2022-9-8 5:08:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索