如何解决我如何才能从txt文件中读取数据并忽略直到达到特定阈值时不需要的值?
我的任务是从txt文件中读取数据,该文件具有2个长列中的值。 右侧是时间,左侧是电压电平。 txt文件的示例如下所示:
0.000000 -0.031960
0.000977 0.076080
0.001953 0.089640
0.002930 0.065460
0.003906 0.083060
0.004883 -0.074380
0.005859 0.092880
0.006836 0.027440
0.007812 0.058540
0.008789 0.026980
0.009766 -0.082800
0.010742 0.049660
0.011719 0.003560
0.012695 0.046220
0.013672 0.063120
0.014648 0.016040
0.015625 0.030760
我要读取此文件并忽略所有数据,直到遇到电压(右侧)大于0.5为止。然后从那里输出满足另一个阈值的值,直到文件结束。
我已经从读取文件开始了我的代码,但是我只是不知道如何在达到阈值时读取数据并输出数据。
这是我到目前为止所做的:
#include <stdio.h>
#define MAXCHAR 1000
int main() {
FILE *fp;
char str[MAXCHAR];
char* filename = "test1.txt";
fp = fopen(filename,"r");
if (fp == NULL){
printf("Could not open file %s",filename);
return 1;
}
while (fgets(str,MAXCHAR,fp) != NULL)
if ()
printf("%s",str);
fclose(fp);
return 0;
}
解决方法
这可能会有所帮助。我在其中更改了第一个阈值的值进行测试(您的数据集的电压没有超过0.5 ...)
#include <stdio.h>
#define MAXCHAR 1000
int main() {
double thres_1 = 0.08;
FILE *fp;
char str[MAXCHAR];
char* filename = "test1.txt";
fp = fopen(filename,"r");
if (fp == NULL){
perror("Could not open file ");
return 1;
}
int tmet = 0;
while (fgets(str,MAXCHAR,fp) != NULL) {
float t,v;
if (sscanf(str,"%g%g",&t,&v) == 2) {
if (v >= thres_1) {
tmet = 1;
}
if (tmet) {
printf("%f\t%f\n",t,v);
}
}
}
if (!tmet) {
printf("Threshold was never exceeded");
}
fclose(fp);
return 0;
}
“第二阈值”以及达到第二阈值时的操作并没有真正指定,但是您可以构建更多代码来检测该阈值并在循环内执行其他操作。
,在此(不正确的)语句之前;
if ()
代码需要从当前输入行中提取两个值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。