这是我遇到问题的代码。该程序的目标是扫描双打并对其执行一些简单的统计操作。我遇到问题的那一行是fgets()
。我已包含stdio.h
,只是它没有出现在代码中。我的实际问题是,尽管stdin
和NULL
是语言的一部分,但它们在哪里给我带来了问题?我得到的确切错误是符号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);
}
答案 0 :(得分:0)
此代码应编译。我怀疑您的开发环境可能有问题。
由于您正在运行Eclipse,所以我假设您的编译器为GCC。不过我可能错了。
尝试找到您的编译器可执行文件,然后手动运行编译:
gcc -Wall -o simpleStats simpleStats.c
或者,如果您使用的是Windows:
gcc.exe -Wall -o simpleStats.exe simpleStats.c
您可能必须指定gcc.exe
的完整路径(根据您的环境,它甚至可能被称为其他名称;您也许能够从Eclipse的控制台窗口中检索完整路径)。 / p>
请密切注意输出。如果可以的话,将完整的输出 verbatim 复制/粘贴到原始帖子中(不要重述警告/错误消息)。
我很少使用Eclipse,但是对于大多数IDE,您可以选择要创建的项目类型。确保您选择了类似“控制台应用程序”之类的内容,而您所指的错误({<1>未被解决)可能表明链接器错误。同样,如果没有确切的GCC输出,很难说。
还有两件事要检查:
答案 1 :(得分:0)
我最终遇到的问题是编译器无法正确读取代码。我使用了不同的编译器,并且在语法上做了一些细微的更改,代码工作正常。