我使用fscanf从配置文件中读取设置行。 这些设置具有严格预定义的格式,看起来像:
name1=option1;
name2=option2;
...
基本上,我这么做。
fscanf(configuration,"%[^=]=%[^;];",name,option);
其中 configuration 是文件流,name 和 option 是程序缓冲区。
问题在于 name 缓冲区包含了一个我不想要的换行符。是否有格式说明符在“[^...]”集中我错过了跳过换行符?无论如何,它能通过格式说明符解决吗?
顺便说一下:通过编写此内容吞咽换行符
"%[^=]=%[^;];\n"
我认为这不够优美,因为换行符可能会在任何地方重复多次。
nameN
字段不能包含空格,只需在格式字符串的前面添加一个空格 -" %[^=]=%[^;];"
- 以跳过前导空格。如果它们可以包含空格,则需要使用getchar()
单独消耗换行符。 - Daniel Fischer%* [\n]
来读取任意数量的'\n'
而不存储它们。 - effeffe