如何检查文件是否已有数据(在C中)?

时间:2014-03-10 06:19:01

标签: c file-io

我正在尝试在C中编写一个模拟程序,我在附加模式中打开它来附加文件。此文件是csv(逗号分隔值)。

在编写实际值之前,我想写出模拟信息的标题,这样它们似乎并不相关。有一个简单的方法吗?

例如:

Central Node, System Delay, Bandwidth Requirement

14,240,11

4,285,23

13,300,9

我的代码如下所示:

void Data_Output(FILE *fp){
struct stat buf;
FILE fd = *fp;
fstat(fd, &buf);
fprintf(stderr,"DEBUG------%d\n",buf.st_size);
}

我得到的输出错误是:

ff.c: In function ‘Data_Output’:
ff.c:296:2: error: incompatible type for argument 1 of ‘fstat’
fstat(fd, &buf);
^
In file included from /usr/include/stdio.h:29:0,
             from ff.c:1:
/usr/include/sys/stat.h:148:5: note: expected ‘int’ but argument is of type ‘FILE’
 int _EXFUN(fstat,( int __fd, struct stat *__sbuf ));
 ^
Makefile:7: recipe for target 'ff.o' failed
make: *** [ff.o] Error 1

我做错了什么?我应该进行类型转换才能使其正常工作吗?

3 个答案:

答案 0 :(得分:1)

您可以检查文件的大小。 有关如何获取尺寸的详细信息,请查看check this post

答案 1 :(得分:0)

您可以使用fstat()函数将统计信息转储到缓冲区,缓冲区中包含st_size下文件的大小。

答案 2 :(得分:0)

fstat ()适用于整数低级文件描述符,而不是FILE * / stream。您需要从FILE *(fp)中获取描述符并使用它。

尝试:

int fd = fileno(fp);
fstat(fd, &buf);