微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何才能从txt文件中读取数据并忽略直到达到特定阈值时不需要的值?

如何解决我如何才能从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 举报,一经查实,本站将立刻删除。