用fseek计算文件字符

时间:2014-03-15 15:46:09

标签: c file-io fseek

我想计算这样的文件字符:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int d=0;
    char filename[25];
    FILE *file;
    printf("Enter file name to be read (Text File!) : ");
    gets(filename);
    file = fopen(filename, "rt");
    if(file == NULL){
        printf("Failed to open file...");
        exit(1);
    }
    fseek(file, 0L, SEEK_SET);
    while( !feof(file) ){
        fseek(file, 1L, SEEK_CUR);
        d++;
    }
    printf("%d", d);
}

之后im打印d并且它的值为0 .. 并且文件剂量有chars。大约150个字符..

3 个答案:

答案 0 :(得分:2)

fseek()允许您超越EOF

的标记

要获取文件大小,您可以fseek(file, 0, SEEK_END)然后拨打ftell(file)

要逐个字符阅读,您可以使用for (i = 0; fgetc(file) != EOF; i++);

答案 1 :(得分:1)

我想知道该程序是否会返回,根据fseek()'s documentation feof()永远不会返回任何内容<>0

  

成功致电          fseek()函数清除流

的文件结束指示符

使用fseek()确定文件大小:

FILE * pf = ...;

fseek(pf, 0, SEEK_END);
long size = ftell(pf);

答案 2 :(得分:0)

我最后做到了这一点并且有效。

fseek(file, 0, SEEK_END);

然后打电话     FTELL(文件);

我试着这样做:

for (i = 0; fgetc(file) != EOF; i++);

它并没有奏效......但现在它是0.0 谢谢大家..!