我有一段代码:

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

最佳答案

就目前的情况来看,您正在将(fstatis)写入一个未初始化的指针,然后试图从中读取,就好像它是一个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/

10-11 16:46