文件指针和使用fgets

ant*_*009 2 c file-io

gcc 4.4.4 c89

我正在读取一个文件,在该文件中我必须对每一行进行一些操作.

在循环中,我调用了2个函数,这些函数传入此文件指针,对文件执行2个不同的操作.

但是,因为我使用fgets读取该文本文件的一行.它会自动递增到下一行.所以对于第二次调用,它已经增加了.但是,我想在与第一个函数相同的行上执行不同的操作.

FILE *fp = NULL;
fp = fopen("devices.txt", "r");
for each line
    get_devicename(fp); <-- calls fgets and operates on line 1, then increments to line 2

    get_machine_code(fp); <-- calls gets and already on line 2, I need line 1
end for
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我创建了2个文件指针对象并将它们传递给函数.但是,将来我可能需要对此文本文件执行更多操作.因此,如果我必须继续创建文件指针的实例,那么可扩展性不高.

非常感谢任何建议,

nos*_*nos 7

首先读取该行,然后将该行传递给get_XXX函数:

FILE *fp = NULL;
char buf[4096];
fp = fopen("devices.txt", "r");
while(fgets(buf,sizeof buf,fp) != NULL) {
    get_devicename(buf);
    get_machine_code(buf);
}
Run Code Online (Sandbox Code Playgroud)