我有一个代码,该代码读取具有大量数字的文本文件。我使用下面的代码来访问它,但这仅占第一行。

我还有其他99行要访问的数据。如何使其读取其他99行数据?

fscanf(fp1,"%lf,%lf,%lf,%lf",&a,&b,&c,&d);

最佳答案

正如elia在评论中提到的,最好的策略是阅读整行
然后用sscanf解析它。

char buffer[1024];
while(fgets(buffer, sizeof buffer, fp1))
{
    if(sscanf(buffer,"%lf,%lf,%lf,%lf",&a,&b,&c,&d) != 4)
    {
        fprintf(stderr, "Invalid line format, ignoring\n");
        continue;
    }

    printf("a: %lf, b: %lf, c: %ld, d: %lf\n", a, b, c, d);
}


另一种选择是继续阅读直到\n

while(1)
{
    if(fscanf(fp1,"%lf,%lf,%lf,%lf",&a,&b,&c,&d) != 4)
    {
        fprintf(stderr, "Invalid line format, ignoring\n");
        if(clear_line(fp1) == 0)
        {
            fprintf(stderr, "Cannot read from fp1 anymore\n");
            break;
        }
        continue;
    }

    printf("a: %lf, b: %lf, c: %ld, d: %lf\n", a, b, c, d);

    if(clear_line(fp1) == 0)
    {
        fprintf(stderr, "Cannot read from fp1 anymore\n");
        break;
    }
}


clear_line看起来像这样:

int clear_line(FILE *fp)
{
    if(fp == NULL)
        return 0;

    int c;
    while((c = fgetc(fp)) != '\n' && c != EOF);

    return c != EOF;
}

关于c - 在C编程中,如何从文本文件中读取数据数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49221853/

10-12 12:50
查看更多