我在使用fscanf()
函數讀取多行文件。我希望忽略換行符,但不要忽略文件中可能存在的其他空白字符。我怎樣才能最好地做到這一點?使用fscanf忽略換行符()
-3
A
回答
0
我認爲這確實你問:
char ch[2];
while (fscanf(fp, "%1[^\n]%*[\n]", ch) == 1)
putchar(ch[0]);
第一格式說明中最多讀取一個字符不是字符串ch
在一個換行符,並將其存儲,而第二符讀取換行,但抑制分配。此循環的結果是打印文件中的所有字符,跳過換行符,直到EOF
。
@AnT在評論中指出,對於以換行符開始的文本文件,該方法將失敗,並提出了修正:在抑制賦值的同時讀取換行符的循環之前調用fscanf()
。改進後的代碼是:
char ch[2];
fscanf(fp, "%*[\n]");
while (fscanf(fp, "%1[^\n]%*[\n]", ch) == 1)
putchar(ch[0]);
0
如果你只在忽略換行符興趣,使用getc()
比使用fscanf()
更簡單,更高效:
void copy_ignoring_newline(FILE *fin, FILE *fout) {
int c;
while ((c = getc(fin)) != EOF) {
if (c != '\n')
putc(c, fout);
}
}
可以適應這個給你想要的任何處理在文件內容上執行。
fscanf()
是解析文件非常笨重的接口,它把空格,換行和其他空白字符相同,除了%c
和%[
轉換說明。 getc()
,fgets()
或fread()
的替代方法似乎更適合您的需求。
相關問題
- 1. 忽略換行符
- 2. 忽略換行符用C
- 3. 使用fscanf忽略逗號和點()
- 4. 忽略\ n(換行符)
- 5. 換行符忽略邊距
- 6. Mandrill忽略換行符(\ n)
- 7. PyParsing忽略換行符?
- 8. 如何忽略換行符?
- 9. RichTextBox忽略換行符
- 10. fscanf和換行符
- 11. C:忽略一個特定的字符,而使用的fscanf
- 12. 使用fscanf讀取字符時是否忽略空格?
- 13. 如何忽略使用Gson轉換爲字符的換行符
- 14. 忽略字符串中的換行符
- 15. fscanf閱讀換行符
- 16. 使用getline忽略空格/製表符/換行符
- 17. 如何忽略fscanf中的空格()
- 18. 如何忽略fscanf中的引號
- 19. 如何忽略';'在fscanf文件中?
- 20. 製作的fscanf忽略可選參數
- 21. pyPdf忽略PDF文件的換行符
- 22. 在解析JSON時忽略換行符
- 23. \ n換行符被java忽略
- 24. 爲什麼std :: istream_iterator忽略換行符?
- 25. 正則表達式忽略換行符
- 26. 忽略MAILMESSAGE我的換行符
- 27. textareas中的換行符被忽略
- 28. 忽略Indesign中的換行符
- 29. Redcarpet markdown忽略多個換行符
- 30. 換行和空行忽略
您需要先選擇一種語言。 C或C++。他們是不同的語言。 –
你想要解析什麼格式? – chqrlie
@SamVarshavchik我使用C,但是這不是在C++中的傳統功能?熟悉C++的人應該熟悉fscanf() – piper1935