我在Eclipse中使用stdin和NULL时遇到问题

时间:2018-09-24 18:15:13

标签: c fgets

这是我遇到问题的代码。该程序的目标是扫描双打并对其执行一些简单的统计操作。我遇到问题的那一行是fgets()。我已包含stdio.h,只是它没有出现在代码中。我的实际问题是,尽管stdinNULL是语言的一部分,但它们在哪里给我带来了问题?我得到的确切错误是符号stdinNULL都无法解析。

 /*
 * 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);
}

2 个答案:

答案 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输出,很难说。

还有两件事要检查:

  • 确保正确安装了编译器及其依赖项,
  • 确保此编译器针对Windows(或您使用的任何操作系统),而不针对某些奇异的嵌入式平台,
  • 大多数开发环境都带有大量示例项目,请查看是否可以构建一个。

答案 1 :(得分:0)

我最终遇到的问题是编译器无法正确读取代码。我使用了不同的编译器,并且在语法上做了一些细微的更改,代码工作正常。