我有一个程序用来从文件中读取数据:
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
有人能告诉我该怎么做吗?
最佳答案
在格式字符串中添加一个空格,以指定输入可以具有可选空白的位置
fscanf(f, "%[^|] |%d | %[^\n]\n", ...)
// ^^^ ^^^^^ optional whitespace
转换已包含可选的前导空格。
如果您的输入字符串在将来会变得更混乱,那么您最好使用单独的解析器,而不是
"%d"
。