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
为了解决这个问题,我创建了 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);
}
关于c - 文件指针和使用 fgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3387049/