簡體   English   中英

fscanf和換行符

[英]fscanf and newline character

我有fscanf從配置文件中讀取設置行。 這些設置具有嚴格預定義的格式,看起來像

name1=option1;
name2=option2;
...

所以基本上我做

fscanf(configuration,"%[^=]=%[^;];",name,option);

其中配置是文件流,名稱和選項是編程緩沖區。

問題是名稱緩沖區包含我不想要的換行符。 是否有格式說明符我在“[^ ...]”設置中錯過了跳過換行符? 無論如何,它可以通過格式說明符解決嗎?

BTW:通過寫這個來吞掉換行符

"%[^=]=%[^;];\n"

我認為,換行符可能會在任何地方重復不止一次。

只需在格式字符串的末尾添加空格:

"%[^=]=%[^;]; "

這將占用所有空白字符,包括換行符。

來自cplusplus.com的報價:

空白字符:該函數將讀取並忽略在下一個非空白字符之前遇到的任何空白字符(空白字符包括空格,換行符和制表符 - 請參閱isspace)。 格式字符串中的單個空格驗證從流中提取的任何數量的空白字符(包括無)。

另一種方法是使用fgets()將整行讀入字符串,然后使用sscanf() 這在調試方面具有優勢,因為您可以准確地看到該函數正在處理哪些數據。

這將有效:

fscanf(configuration,"%[^=]=%[^;];%[^\\n]",name,option,dummy);

您將不得不使用換行符。否則,換行符將保留在輸入流中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM