c - 我在 eclipse 中使用 stdin 和 NULL 时遇到问题

标签 c fgets

这是我遇到问题的代码。该程序的目标是扫描一堆 double 并对它们执行一些简单的统计操作。我遇到问题的行是 fgets()。我包含了 stdio.h,它只是没有出现在代码中。我的实际问题是,当我认为它们是语言的一部分时,stdinNULL 在哪里给我带来问题?我得到的确切错误是 Symbol 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);
}

最佳答案

这段代码应该可以编译。我怀疑您的开发环境可能有问题。

由于您运行的是 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/

相关文章:

c - 使用带套接字的 C 中的 I/O 从服务器接收响应

php - fopen数据存入数据库

C 编程 - 调用 fgets() 两次?

C中使用链表将二进制转换为十进制

c - gtk+ vte 回滚不起作用

c - bool 数组的排列

c - 如何在 C [而不是 C++] 中多次扫描包含多个单词的字符串?

c - 为什么代码只输出 'Have a nice day?' 尽管输入了 Friday 并声明了给定的字符串?

c - 请求非结构或 union 中的成员 'x' 和段错误(丢失)

c - 使用函数在 C 中对数组进行排序,但程序不运行