日期:2014-05-16  浏览次数:20695 次

stat返回成功,但获取的值为0

        struct stat fpStat = {0};
if(stat("/test/test.cfg", &fpStat) < 0)//该文件大小5600字节
return -1;
perror("Error:");
printf("=========Size:%d==\n", fpStat.st_size);


fpStat.st_size的值一直为0
stat函数返回的是成功的。

但如果我执行读写操作后,再用上面方法,就可以得到正确值。

如下:

        int ret;
if((fp = fopen(SYS_FILE, "rb")) == NULL){
printf("=====File:%s is not exist===\n", SYS_FILE);
ret = FAIL;
} else {
if(fread(Buffer, 1, SYS_ENV_SIZE,fp) != SYS_ENV_SIZE){
printf("=====File:%s read(%d)===\n", SYS_ENV_SIZE);
ret = FAIL;
} else {
ret = SUCCESS;
}
fclose(fp);
}

------解决方案--------------------
stat 的 st_size类型为off_t, 楼主可以试试这个
printf("=========Size:%d==\n", (int)fpStat.st_size);