【问题标题】:stat structure error(fstat system call)stat 结构错误(fstat 系统调用)
【发布时间】:2012-08-20 18:20:30
【问题描述】:

我有这个代码 sn-p:

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

【问题讨论】:

    标签: c unix


    【解决方案1】:

    就目前而言,您正在(fstat 是)写入一个未初始化的指针,然后尝试从中读取它,就好像它是一个 struct stat。您应该将代码更改为:

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

    或者,您可以将malloc 记忆到fileData,然后使用fileData->st_size。这会不太优雅(您必须free 等)。

    【讨论】:

      【解决方案2】:

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

      然而,stat() 期望你为结构体 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 2012-05-30
        相关资源
        最近更新 更多