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个文件指针对象并将它们传递给函数.但是,将来我可能需要对此文本文件执行更多操作.因此,如果我必须继续创建文件指针的实例,那么可扩展性不高.
非常感谢任何建议,
首先读取该行,然后将该行传递给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)