【问题标题】:how to read data from a file with space ignored?如何从忽略空格的文件中读取数据?
【发布时间】:2016-04-19 22:10:17
【问题描述】:

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

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

有人能给我一些提示吗?

【问题讨论】:

  • 查看this 链接,看看它是否有帮助。

标签: c file-io scanf


【解决方案1】:

在格式字符串中添加一个空格来指定输入可以在哪里有可选的空格

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2013-04-28
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多