Fseek没有';t设置流在C中的文件位置

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

我编写了这个简单的C程序,其目的是计算通过第二个命令行参数给出的文本文件中的字符数。 我面临的问题是,fseek show not response的结果是在函数“Counter”中有一个无限循环(而(!feof(fp))。通过用fgetc替换fseek,程序运行良好。我的问题是fseek出了什么问题。 提前谢谢

#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的文件。