stat结构错误(fstat系统调用)

时间:2012-08-20 10:17:00

标签: c unix

我正在使用此代码段:

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

2 个答案:

答案 0 :(得分:3)

现在你正在写(fstat is)到一个未初始化的指针,然后尝试从它读取,好像它是struct stat。您应该将代码更改为:

struct stat fileData;
if((fstat(fd, &fileData) == -1)
              ^

或者,你可以malloc将记忆转移到fileData,然后使用fileData->st_size。这将不那么优雅(你必须free等。)。

答案 1 :(得分:0)

您的fileData结构是一个指针。 fileData.st_size必须为fileData->st.size(*fileDate).st_size

但是,stat()希望你提供struct stat的存储,你必须这样做

struct stat fileData; // <---change to this
if((fd=open("abc.txt",O_RDONLY)==-1)
      perror("file not opened");
if((fstat(fd,&fileData)==-1)  // <---change to this
      perror("stucture not filled");
printf("%d",fileData.st_size);