Fseek没有';t设置流在C中的文件位置
我编写了这个简单的C程序,其目的是计算通过第二个命令行参数给出的文本文件中的字符数。 我面临的问题是,fseek show not response的结果是在函数“Counter”中有一个无限循环(而(!feof(fp))。通过用fgetc替换fseek,程序运行良好。我的问题是fseek出了什么问题。 提前谢谢Fseek没有';t设置流在C中的文件位置,c,fseek,C,Fseek,我编写了这个简单的C程序,其目的是计算通过第二个命令行参数给出的文本文件中的字符数。 我面临的问题是,fseek show not response的结果是在函数“Counter”中有一个无限循环(而(!feof(fp))。通过用fgetc替换fseek,程序运行良好。我的问题是fseek出了什么问题。 提前谢谢 #include <stdio.h> int Counter (FILE * fp); int main(int argc, char* argv[]) { in
#include <stdio.h>
int Counter (FILE * fp);
int main(int argc, char* argv[])
{
int cntr;
FILE * fpc;
fpc = fopen(argv[1],"r");
cntr = Counter(fpc);
fclose(fpc);
printf("%i\n",cntr);
}
int Counter (FILE * fp)
{
int cntr = 0;
while (!feof(fp))
{
cntr++;
fseek(fp,1,1);
}
return cntr;
}
#包括
int计数器(文件*fp);
int main(int argc,char*argv[])
{
int-cntr;
档案*fpc;
fpc=fopen(argv[1],“r”);
cntr=计数器(fpc);
fclose(fpc);
printf(“%i\n”,cntr);
}
整数计数器(文件*fp)
{
int-cntr=0;
而(!feof(fp))
{
cntr++;
fseek(fp,1,1);
}
返回cntr;
}
允许并定义明确的行为在文件末尾以外进行搜索
这就是为什么fseek()
从:
5确定新位置后,成功调用fseek函数[…]将清除流的文件结束指示符,然后建立新位置
使用常量<代码> Sekkur-Cu/<代码>,使代码更清晰。我已经使用了相同的结果。请考虑使用<代码> fS寻(FP,0,SekkyEnter)< /C> >结合<代码> ftEL()/<代码>。是的,<代码> fS寻(FP,0,SekkyEnter);cntr=ftell()
将为您提供您所期望的。捕捉得好!我看到过这样的代码,您可以进一步写入一个字节,fseek
1GB,然后再写入另一个字节,从而导致文件系统在256MB的磁盘上看到一个1GB的文件。