C Программный код не остановит чтение из текстового файла - PullRequest
2 голосов
/ 26 апреля 2019

Я пытаюсь прочитать данные из текстового файла и распечатать, когда человек входит в комнату и когда кто-то выходит из комнаты.Текстовый файл - это данные от датчика, который профессор помог нам собрать.Файл содержит углы и диапазоны, обнаруженные датчиком (в текстовом файле он записал «angle» как «angel»).

У меня проблема в том, что программа прочитает файл и напечатает то, что мне нужноно это не остановит чтение файла.Мне также нужно добавить счетчик, который будет прибавлять один при каждом входе человека и вычитать один при каждом выходе человека, но я не могу добавить счетчик и заставить его напечатать, пока я не исправлю код и не перестану читать текстфайл.Мой текущий код ниже.Пожалуйста, помогите мне решить эту проблему и спасибо !!

#include <stdio.h>
int main() {
FILE *fp;
FILE *op;
int time;
int range;
float i;
float angel;
char str;
fp = fopen("/home/chris/Desktop/test.txt", "rt");
op = fopen("/home/chris/Desktop/Pro.csv", "w");
i=0;
while((str = getc(fp)) != EOF) {
fscanf(fp,"range: %d, ",&range);
fscanf(fp,"angel: %f,",&angel);

if (angel == -10.75)
{
if(range<4100) {

printf("Someone has entered the room\n"); 
}
}
if (angel == -10.75)
{
if (range>4100 && range<6000)


printf("Someone has left the room\n");
i++;


}
}

fclose(fp);
fclose(op);
return 0;
}

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

Тип возврата getc() - int, но ваша переменная str - char. Возможно, ваша система использует значение EOF, которое находится за пределами диапазона char.

1 голос
/ 27 апреля 2019

строка 13, getc () возвращает int.вам нужно преобразовать его в char

, так как int невозможен, вы получаете NULL

fgetc () - более вероятный ответ.посмотри на;/1157542/kak-ispolzovat-eof-dlya-zapuska-cherez-tekstovyi-fail-v-c

это лучше объясняет возврат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...