我有一段代码:
struct stat *fileData;
if((fd=open("abc.txt",O_RDONLY)==-1)
perror("file not opened");
if((fstat(fd,fileData)==-1)
perror("stucture not filled");
printf("%d",fileData.st_size);
显示错误:
request for member ‘st_size’ in something not a structure or union
我也试过使用
stat
。 最佳答案
就目前的情况来看,您正在将(fstat
is)写入一个未初始化的指针,然后试图从中读取,就好像它是一个struct stat
指针一样。您应该将代码更改为:
struct stat fileData;
if((fstat(fd, &fileData) == -1)
^
或者,您可以将
malloc
内存设置为fileData
,然后使用fileData->st_size
。这样就不那么优雅了(你必须free
等等)。关于c - 统计结构错误(fstat系统调用),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12035861/