У меня проблемы с использованием стандартного ввода и NULL в затмении - PullRequest
0 голосов
/ 24 сентября 2018

Вот мой код, с которым у меня проблемы.Целью программы является сканирование в паре двойных и выполнение некоторых простых статистических операций над ними.У меня проблема с 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);
}

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Проблема в том, что компилятор неправильно читал код.Я использовал другой компилятор, и с некоторыми незначительными изменениями синтаксиса код работал нормально.

0 голосов
/ 24 сентября 2018

Этот код должен скомпилироваться.Я подозреваю, что что-то может быть не так с вашей средой разработки.

Поскольку вы используете 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 (или любой другой ОС, которую вы используете), а не для какой-то экзотической встроенной платформы,
  • большинство сред разработки поставляются с кучей примеров проектов, посмотрите, можете ли вы создать один.
...