我的目标是在C语言中从文本文件创建两个变量,以后可以在代码中使用。我的第一个变量是第1、3、5、7行的数据。第二个变量是第2、4、6行的数据,以此类推。
主要功能:

#include <stdio.h>

int main() {
    FILE *file;
    char buf[500];
    file = fopen("ANTdata.txt", "r");

    if (!file) {
        return 1;
    }
    while (fgets(buf, 500, file) != NULL) {
        printf("%s", buf);
    }
    fclose(file);
    return 0;
}

文本文件示例:
 0.0002746660
-0.0013733300
-0.0002136290
-0.0002746660
 0.0021362900
-0.0006103680
 0.0006103680
-0.0022583600
-0.0011291800
-0.0005798500
 0.0000000000
-0.0001831100
 0.0000915552
-0.0015259200

最佳答案

您的问题可以通过fscanf()轻松解决:

#include <stdio.h>

int main() {
    FILE *file;
    double x1[1000], x2[1000];
    int n;

    file = fopen("ANTdata.txt", "r");
    if (!file) {
        return 1;
    }
    for (n = 0; n < 1000 && fscanf(file, "%lf%lf", &x1[n], &x2[n]) == 2; n++)
        continue;

    fclose(file);

    /* arrays x1 and x2 have `n` elements, perform your computations */
    ...

    return 0;
}

如果只想用不同的函数一次处理两行,下面是一个简单的解决方案:
#include <stdio.h>
#include <string.h>

void my_function(const char *line1, const char *line2) {
    printf("x: %s, y: %s\n", line1, line2);
}

int main() {
    FILE *file;
    char line1[250], line2[250];

    file = fopen("ANTdata.txt", "r");
    if (!file) {
        return 1;
    }
    while (fgets(line1, sizeof line1, file) && fgets(line2, sizeof line2, file)) {
        /* strip the trailing newlines if any */
        line1[strcspn(line1, "\n")] = '\0';
        line2[strcspn(line2, "\n")] = '\0';
        my_function(line1, line2);
    }
    fclose(file);
    return 0;
}

关于c - 使用C中的fget将文本文件解析为多个变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51769061/

10-13 03:20