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

标签 c

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

@1234
5

我想打印 5,其余忽略不计。

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

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

最佳答案

至于你之前的问题,如果你想忽略带有初始 @ 的注释行,强烈建议使用 逐行阅读文件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.

关于c - 跳到文件的下一行忽略内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34580871/

相关文章:

运行优化代码时无法写入文件

c++ - 恒定时间访问是否​​意味着在某些时候是连续的内存?

c - 使用 put 和 strcat 得到的字符串显示额外的字符

c - 这个函数运行了太多次

c - 为什么 "%s"格式说明符甚至可以用于没有 `\0` 的字符数组并一次打印其所有元素?

c - 多个函数的 undefined reference 错误

c - "long"在 C 中仍然有用吗?

c - C中带指针的嵌套结构

c - 在不使用 getpass (3) 的情况下在 C 中获取密码?

为内核模块创建 DKMS 包,依赖于内核头文件