首页 > 解决方案 > Fscanf 无法正确扫描行中的值

问题描述

所以我想读取这些行并将它们保存在一个数组中。你能帮我找出问题吗,因为我无法扫描到线的最后一个值(距离)。

代码:

[...]
typedef struct {
    int start;
    int end;
    double distance;
} data;
[...]
data* vertexes = (data*)malloc(sizeof(data))
FILE* f= fopen("option_c.txt", "r");

if (f == NULL)
{
    printf("\n\nThe program couldn't read in the 'option_a.txt' file. The program is going to stop");
        return NULL;
}

fscanf(f,"%d\t%d\t%lf", &vertexes[i].start, &vertexes[i].end, &vertexes[i].distance);
printf("%d\t%d\t%lf", vertexes[0].start, vertexes[0].distance, vertexes[0].distance);
[...]

我的文件第一行是 1 0 1 我的输出是:1 0 0

我去扔我的文件,我无法扫描最后一个值,但我不知道在哪里搜索问题的根源。我的意见很明确。

提前致谢。

标签: cscanf

解决方案


您确实意识到您要打印两次距离,对吗?

另一件事\t是“制表符”的转义字符,所以我相信它是默认的 4 个空格,所以如果你只有一个空格字符分隔文件中的值,你最好使用:

fscanf(f,"%d %d %lf", &vertexes[i].start, &vertexes[i].end, &vertexes[i].distance);

推荐阅读