我有fscanf从配置文件中读取设置行.这些设置具有严格预定义的格式,看起来像
name1=option1;
name2=option2;
...
Run Code Online (Sandbox Code Playgroud)
所以基本上我做
fscanf(configuration,"%[^=]=%[^;];",name,option);
Run Code Online (Sandbox Code Playgroud)
其中配置是文件流,名称和选项是编程缓冲区.
问题是名称缓冲区包含我不想要的换行符.是否有格式说明符我在"[^ ...]"设置中错过了跳过换行符?无论如何,它可以通过格式说明符解决吗?
BTW:通过写这个来吞掉换行符
"%[^=]=%[^;];\n"
Run Code Online (Sandbox Code Playgroud)
我认为,换行符可能会在任何地方重复不止一次.
Evg*_*uev 13
只需在格式字符串的末尾添加空格:
"%[^=]=%[^;]; "
Run Code Online (Sandbox Code Playgroud)
这将占用所有空白字符,包括换行符.
来自cplusplus.com的报价:
空白字符:该函数将读取并忽略下一个非空白字符之前遇到的任何空白字符(空格字符包括空格,换行和制表符 - 看到isspace为).格式字符串中的单个空格验证从流中提取的任何数量的空白字符(包括无).