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