这是我遇到问题的代码。该程序的目标是扫描一堆 double 并对它们执行一些简单的统计操作。我遇到问题的行是 fgets()
。我包含了 stdio.h
,它只是没有出现在代码中。我的实际问题是,当我认为它们是语言的一部分时,stdin
和 NULL
在哪里给我带来问题?我得到的确切错误是 Symbol stdin
和 NULL
都无法解析。
/*
* simpleStats.c
*
* Created on: Sep 17, 2018
* Author: David Liotta
*/
#include <stdio.h>
#define BUFSIZE 256
int main(){
double n, max, min, sum, mean;
char line[BUFSIZE];
int numsRead = 0;
int numOfItems = 1;
n = -1;
max = n;
min = n;
sum = n;
while(n != 0 && fgets(line, BUFSIZE, stdin ) != NULL){
numsRead = sscanf(line, "%f", &n);
if(numsRead == 1 && n != 0){
numOfItems++;
if(n > max)
max = n;
if(n < min)
min = n;
sum = sum + n;
}
if(numsRead == 0)
printf("Bad input\n");
}
mean = sum / numOfItems;
printf("# of items: %i", numOfItems);
printf("\nSum: %f.3", sum);
printf("\nMax: %f.3", max);
printf("\nMin: %f.3", min);
printf("\nMean: %f.3", mean);
}
最佳答案
这段代码应该可以编译。我怀疑您的开发环境可能有问题。
由于您运行的是 Eclipse,我假设您的编译器是 GCC。不过我可能错了。
尝试找到您的编译器可执行文件,并手动运行编译:
gcc -Wall -o simpleStats simpleStats.c
或者,如果您使用的是 Windows:
gcc.exe -Wall -o simpleStats.exe simpleStats.c
您可能必须指定 gcc.exe
的完整路径(根据您的环境,它甚至可能被称为其他名称;您可以从控制台窗口中检索完整路径在 Eclipse 中)。
密切关注输出。如果可以,将完整的输出逐字复制/粘贴到您的原始帖子中(不要改写警告/错误消息)。
我很少使用 Eclipse,但对于大多数 IDE,您可以选择要创建的项目类型。确保您选择了诸如“控制台应用程序”之类的内容,您所指的错误(stdin
未被解决)可能表明存在链接器错误。同样,如果没有确切的 GCC 输出,则很难判断。
还有几件事要检查:
- 确保您的编译器及其依赖项已正确安装,
- 确保此编译器针对 Windows(或您使用的任何操作系统),而不是针对某些奇特的嵌入式平台,
- 大多数开发环境都带有一堆示例项目,看看您是否可以构建一个。
关于c - 我在 eclipse 中使用 stdin 和 NULL 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485134/