gpt4 book ai didi

c - 整理文件输出问题

转载 作者:行者123 更新时间:2023-11-30 15:23:31 26 4
gpt4 key购买 nike

我正在开发一个程序来组织文件中的数字列表,并以更易于阅读的格式输出这些数字。例如一个名为 Counting.txt 的文件,其中包含数字:

11

1 1 2 3 4 4 4 4 5 5 7

我希望它输出:

1x2 2x1 3x1 4x4 5x2 7x1

输出的公式为vXc,其中v是数字,c是它出现的次数。但我当前的程序仅将其输出为:

1x1 2x1 3x1 4x1 4x1 4x1 4x1 5x1 5x1 7x1

我相信我的 for 循环中有一个小错误,不允许我更改我的 c 变量,或指示实际数字出现次数的数字。有人可以帮忙吗?

我的代码:

#include <stdio.h>

int main () {
FILE* file = fopen("counting.txt", "r");
int total_num, count = 1, num, num2, i;

if (file == NULL) {
printf("Did not find counting.txt file.\n");
}

fscanf(file, "%d", &total_num);
fscanf(file, "%d", &num);

for (i = 1; i < total_num; i++) {
fscanf(file, "%d", &num);

if (num2 == num) {
count = count + 1;
} else {
printf("%dX%d ", num, count);
count = 1;
}
}
return 0;
}

最佳答案

在循环中,您读入 num 而不是 num2。所以一般来说 num2 是未定义的。您还需要在每个循环迭代结束时将 num2 的值分配给 num

此外,当您打印重复次数时,您应该引用旧值而不是当前值,因为您不知道当前数字后面是否会跟着其他相同的数字。

所以你可以将循环更改为:

for (i=1; i< total_num; i++) {
fscanf(file, "%d", &num2);
if (num2 == num) {
count = count + 1;
}
else {
printf("%dX%d ", num, count);
count = 1;
}
num = num2;
}
printf("%dX%d ", num, count);

关于c - 整理文件输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com