【发布时间】:2012-10-24 16:23:32
【问题描述】:
我有 fscanf 从配置文件中读取设置行。这些设置具有严格的预定义格式,看起来像
name1=option1;
name2=option2;
...
基本上我是这样
fscanf(configuration,"%[^=]=%[^;];",name,option);
其中配置是文件流,名称和选项是编程缓冲区。
问题是名称缓冲区包含我不想要的换行符。我在“[^...]”设置中错过了格式说明符以跳过换行符吗?无论如何,它可以通过格式说明符解决吗?
顺便说一句:通过写这个来吞下换行符
"%[^=]=%[^;];\n"
我认为这并不优雅,因为换行符可以在任何地方重复多次。
【问题讨论】:
-
如果
nameN字段不能包含空格,只需在格式字符串前面添加一个空格 -" %[^=]=%[^;];"- 以跳过前导空格。如果可以,您需要使用getchar()自行使用换行符。 -
接受的答案是正确的,无论如何,关于重复的换行符,您可以使用
%*[\n]读取任意数量的'\n'而无需存储它们。