嗨所以我有一个程序,如果在文本文件第一行的开头有一个@它需要被忽略,你如何跳转到下一行文件?忽略@之后的所有内容? 例如:
@1234
5
我想要打印5,其余的要被忽略。
如果背后没有任何内容,我只能设法跳过@
while (a == '@' || a == '\r'|| a == '\n') {
fscanf(inp, "%c", &a);
}
答案 0 :(得分:0)
而不是
while (a == '@' || a == '\r'|| a == '\n') {
fscanf(inp,"%c",&a);
}
尝试(伪代码):
If FirstChar == '@'
Loop/scan until '\n'
On nextline here
如果您想使用fscanf()
。
如果需要更好的性能,请直接使用缓冲区。
答案 1 :(得分:0)
至于您之前的问题,如果您想忽略带有@
初始条件的评论行,建议高度逐行阅读fgets()
和在忽略注释行的同时直接处理非注释行。
使用fscanf
执行此操作实际上并非易事,因为根据您的格式行,换行可能已经消耗,也可能没有消耗。
如果您在一行的开头并且想要在忽略注释行的同时阅读下一个字符,请执行以下操作:
int c; // Must be int to accommodate for EOF.
while ((c = getc(inp)) == '@') {
while ((c = getc(inp)) != EOF && c != '\n')
continue;
}
// Here c contains the first char from a non comment line or EOF.