c - 文件指针和使用 fgets

标签 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

为了解决这个问题,我创建了 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/

相关文章:

c - 获取一个很长的数字的前两位

c - 我怎么知道哪个 child 退出了C?

c - 从函数返回字符串(字符数组、字符指针等)

Python read() 似乎返回的数据少于它读取的数据

wpf - 无法删除其他进程使用的文件

python - for line in open(..) 在文件中间意外挂起

c++ - 从 FILE 结构获取文件模式?

php - PHP读取CSV文件的问题

c++ - 读取字符,如果不等于 ? 则打印

c++ - read() 和 getc() 有什么区别