如何用C最好地解析文件中的注释行

如何用C最好地解析文件中的注释行,c,C,好的,我正在尝试读取PPM文件(p3格式),我想读取注释(PPM文件中的) 问题是我不知道如何让C做我脑子里想做的事情,这就是我想要它做的 read the file where # appears, store all characters until the %\n character appears repeat until all comments are read 我知道我应该使用一些getc、fgets和fscanf的变体,但我不知道如何在这种情况下应用它们 我会用一些代码来

好的,我正在尝试读取PPM文件(p3格式),我想读取注释(PPM文件中的)

问题是我不知道如何让C做我脑子里想做的事情,这就是我想要它做的

read the file

where # appears, store all characters until the %\n character appears

repeat until all comments are read

我知道我应该使用一些getc、fgets和fscanf的变体,但我不知道如何在这种情况下应用它们

我会用一些代码来展示我用getc、fgets和fscanf所做的尝试,但坦率地说,我不知道如何使用这些函数,我能找到的信息似乎都没有帮助,我真的不认为我的任何实现都在做任何事情


是否有人/有人愿意向我展示如何使用这些函数中的任何一个解析一行的示例?

简单的两状态FSM,一次读取一个字符:


#包括
内部主(空)
{
int ch,state;
对于(状态=0;;){
ch=getc(标准偏差);
如果(ch==EOF)中断;
如果(州){
putc(ch,stdout);
如果(ch=='\n')状态=0;
继续;
}
如果(ch='#')状态=1;
}
返回0;
}


使用./a.out查看getLine函数。有什么可以帮助的是有趣的,但我如何将其应用于文件IO而不是用户IO。什么是文件IO?什么是用户IO?有区别吗?我的意思是,我想打开一个文件,然后解析它。stdin没有从控制台请求用户输入吗?完全一样。stdin/stdout的优点是您不必打开它们;它们已经为您打开了。现在,你做你的家庭作业。
#include <stdio.h>

int main(void)
{
int ch, state;

for(state=0;; ) {
        ch = getc(stdin);
        if (ch == EOF) break;
        if (state) {
                putc(ch, stdout);
                if (ch == '\n') state=0;
                continue;
                }
        if (ch == '#') state = 1;
        }
return 0;
}
include <stdio.h>
') state = 1;