如何从忽略空格的文件中读取数据?

时间:2016-01-14 14:28:23

标签: c file-io scanf

我有这个程序用于从文件中读取数据:

void baca(int *n)
{
    FILE *f = fopen("namafile.txt", "r");
    if (f)
    {
        while (fscanf(f, "%[^|]|%d|%[^\n]\n", mhs[*n].nama, &mhs[*n].umur, mhs[*n].hp)==3)
        {
            (*n)++;
        }
    }
    fclose(f);
}

如果我像这样在文件中写入数据,那么程序会正确读取它:

nko|20|9999

hotma|21|9982882

andi|30|212313

但是当我添加一些这样的空格时,不知何故它无法正确读取它:

nko | 20 | 9999

hotma | 21 | 9982882

andi | 30 | 212313

有人可以给我一些暗示我应该做什么吗?

1 个答案:

答案 0 :(得分:8)

在格式字符串中添加一个空格,以指定输入可以包含可选空格的位置

fscanf(f, "%[^|] |%d | %[^\n]\n", ...)
//             ^^^ ^^^^^   optional whitespace

转化"%d"已包含可选的前导空格。

如果您的输入字符串将来会变得更加混乱,您可以使用单独的解析器而不是scanf()做得更好。