我在使用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