c - C 编程代码不会停止从文本文件中读取
问题描述
我正在尝试从文本文件中读取数据并在有人进入房间和有人离开房间时打印。文本文件是教授帮助我们收集的传感器数据。该文件包含传感器检测到的角度和范围(他在文本文件中将“角度”拼写为“天使”)。
我遇到的问题是程序将读取文件并打印我想要的内容,但它不会停止读取文件。我还需要添加一个计数器,每次有人进来时都会加一个,每次有人出去时都会减一个,但我无法添加计数器并让它打印,直到我修复代码并让它停止阅读文本文件。我当前的代码如下。请帮我解决这个问题,谢谢!
#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()
是int
,但您的str
变量是char
。可能是您的系统使用的值EOF
超出了 a 的范围char
。
推荐阅读
- java - 可能的 Vaadin 错误:无法导航到根上下文路径
- java - 在 JOOQ 的 ExecuteListener 中访问插入/更新映射
- angular - NGRX Entity addOne 替换当前状态的对象
- java - 解析 XML 文件的 java 代码的 JUnit 测试用例要求
- mysql - 动态内容类型:一张有很多列的表格还是每个表格一张?
- angularjs - 如何根据下拉值在表上应用过滤器
- excel - 如何将列中的每个唯一名称复制到主表?
- java - 如何实现连接服务类以在我们的拨号器应用程序中添加运营商呼叫功能?
- node.js - 使用 pm2 和 bytenode 启动 NodeJS 应用程序
- java - Java 8:ArrayDeque<>.poll 在并行环境中返回 null