【发布时间】:2012-04-09 13:33:37
【问题描述】:
此程序获取文件中的第一个数字并指示其后有多少个数字,然后对后面的数字执行各种其他操作。
似乎 scanf 在尝试从文件中读取时导致了无限循环。当我运行程序时,甚至 1 的检查都不起作用
代码如下:
#include <stdio.h>
int main(void) {
int N, a, n;
int x=0;
int t=0;
printf("1"); //Check
scanf("%d", &N);
printf("2"); //Check
int nums[N];
int i;
printf("%d", &N); //Check
for (i=0; i<N; i++)
{
scanf("%d", &nums[i]);
t+=nums[i];
if (nums[i] > x) x=nums[i];
if (i=0 || nums[i] < n) n = nums[i];
}
a = t/N;
printf("Number Processed: \t%d\n", &N);
printf("Maximum: \t%d\n", &x);
printf("Minimum: \t%d\n", &n);
printf("Total: \t%d\n", &t);
printf("Average: \t%d\n", &a);
}
我运行程序的方式是
gcc -lab16
./a.out <in1
in1 是文本并且有数字
7
6
-30
90
3903
-934
443
445
感谢您的宝贵时间。
【问题讨论】:
-
int nums[N];- 如果你想要一个可变长度的数组 - 你可能需要malloc()它。另外,尝试将\n添加到您的“检查”中。 -
打印快速脏跟踪时,在最后加上
\n强制刷新,否则输出不会立即出现。确保您的输入文件在最后一行有一个行尾标记。 -
@amit 我从来没有学过 malloc(),你是什么意思? @dasblinkelight 你的意思是像
printf("1"); \n? -
printf("%d", &N);是未定义的行为,在此之后的代码无话可说。也许你想要printf("%d", N);? -
@JA3N:他的意思是:
printf("1\n");。 malloc() 用于当您需要一个只有在运行时才知道的大小数组时,因为N对编译器来说是未知的!