【问题标题】:C Programming code will not stop reading from text fileC 编程代码不会停止从文本文件中读取
【发布时间】:2019-04-26 19:03:36
【问题描述】:

我正在尝试从文本文件中读取数据并在有人进入房间和有人离开房间时打印。文本文件是教授帮助我们收集的传感器数据。该文件包含传感器检测到的角度和范围(他在文本文件中将“角度”拼写为“天使”)。

我遇到的问题是程序会读取文件并打印我想要的内容,但它不会停止读取文件。我还需要添加一个计数器,每次有人进来时都会加一个,每次有人出去时都会减一个,但我无法添加计数器并让它打印,直到我修复代码并让它停止阅读文本文件。我当前的代码如下。请帮我解决这个问题,谢谢!!

#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;
}

【问题讨论】:

  • 您真的想在循环的每次迭代中丢弃输入的一个字符吗?如果没有,那么根本不要使用getc。只需检查fscanf 返回的值。

标签: c


【解决方案1】:

getc() 的返回类型是int,但你的str 变量是char。可能是您的系统使用的 EOF 值超出了 char 的范围。

【讨论】:

    【解决方案2】:

    第 13 行,getc() 返回一个 int。您需要将其转换为字符

    因为 int 是不可能的,所以你得到一个 NULL

    fgetc() 是一个更有可能的答案。 看着; https://stackoverflow.com/questions/1835986/how-to-use-eof-to-run-through-a-text-file-in-c

    它更好地解释了回报

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多