跳到忽略内容的下一行文件

时间:2016-01-03 19:45:33

标签: c

嗨所以我有一个程序,如果在文本文件第一行的开头有一个@它需要被忽略,你如何跳转到下一行文件?忽略@之后的所有内容? 例如:

@1234
5

我想要打印5,其余的要被忽略。

如果背后没有任何内容,我只能设法跳过@

while (a == '@' || a == '\r'|| a == '\n') {            
    fscanf(inp, "%c", &a);            
}

2 个答案:

答案 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.