我正在尝试在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
我做错了什么?我应该进行类型转换才能使其正常工作吗?
答案 0 :(得分:1)
您可以检查文件的大小。 有关如何获取尺寸的详细信息,请查看check this post
答案 1 :(得分:0)
您可以使用fstat()
函数将统计信息转储到缓冲区,缓冲区中包含st_size
下文件的大小。
答案 2 :(得分:0)
fstat ()适用于整数低级文件描述符,而不是FILE * / stream。您需要从FILE *(fp)中获取描述符并使用它。
尝试:
int fd = fileno(fp);
fstat(fd, &buf);