Вот мой код, с которым у меня возникли проблемы. Цель программы - сканировать несколько двойников и выполнять над ними простые статистические операции. У меня проблема с линией 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);
}
1
David Liotta 24 Сен 2018 в 21:15

2 ответа

Лучший ответ

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

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

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

0
David Liotta 24 Сен 2018 в 21:30