【发布时间】:2015-04-09 05:28:33
【问题描述】:
我的命令输出有问题,当我尝试使用 rewind 或 fseek 重新加注并检查输出命令以执行其他不起作用的操作时,这是部分代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
FILE *pf;
int nhd=1;
size_t b_size = 80;
char *data = malloc(b_size * sizeof(char));
pf = popen("/sbin/mycmd -s","r");
while(-1 != getline(&data, &b_size, pf))
nhd++;
fseek (pf , 0 , SEEK_SET); // rewind(pf);
while(-1 != getline(&data, &b_size, pf))
nhd++;
printf("%i\n",nhd);
pclose(pf);
free(data);
}
它应该输出命令行数的两倍,但倒带或当我使用真实文件时,它无法正常工作。我该怎么办?
【问题讨论】:
-
只能在普通文件中查找,不能在管道中查找。
-
如果需要多次遍历输入,则必须将其保存在内存中。
-
你需要添加错误检查,
fseek应该已经返回了错误代码。