【发布时间】:2021-03-31 09:29:54
【问题描述】:
text文件中的input数据如下:
Mike 107 Europe 6798
Steve 023 New York 2588
Adam 057 South Town 1902
Adam 124 Asia 5555
用whitespace分隔的数据
C code从文件中读取数据是:
char name[30];
int code;
char local[30];
int id;
while (fscanf(fp, "%s %d %[^ ] %d", name, &code, local, &id) != EOF){
printf("%s-%d-%s-%d\n", name, code, local, id);
}
我的代码的问题是,对于local,总是一次读取一个单词,我的打印输出是:
Mike 107 Europe 6798
Steve 023 New 2588
Adam 057 South 1902
Adam 124 Asia 5555
New York 和 South Town 被截断。我该如何解决?
【问题讨论】:
-
%[^ ]的格式与%s完全相同,即读取到下一个空格。我推荐你read whole lines,然后尝试使用其他方式提取字段。 -
似乎在这个数据空间中不是真正的分隔符,您是使用列号来分隔字段还是TAB字符。如果您可能同时使用 TAB 和 SPC,那么您确实遇到了不明确的分隔符问题。
-
当你声称你会在那里得到数字 2588 时,我不相信你。不,它将是上一行的数字。
-
@kerma 你确定你的输入文件是用空格而不是制表符分隔的吗?
-
@KamilCuk 只有空格没有制表符