[C] [Stat] [Fileinfo]当我使用stat()调用返回结构时,为什么st_mode被定义为不在结构中的东西?

时间:2015-11-18 23:20:07

标签: c struct stat

我正在尝试使用返回的st_mode结构中的stat,这是我从stat()调用获得的结果;

        char *fn = "test.c"

        struct stat *buf = malloc(sizeof(stat));

        stat(fn,buf);

        if(S_ISREG(buf.st_mode))
        {
          printf("this file is a regular file..."); //if regular
        }

当我尝试编译此代码时,出现以下错误:

server1.c: In function ‘main’:
server1.c:223:32: error: request for member ‘st_mode’ in something not 
a structure or union
         if(S_ISREG(fileData.st_mode))
                            ^

为什么我会收到此编译错误?我自己似乎找不到太多信息..

1 个答案:

答案 0 :(得分:1)

buf不是struct statbuf是指向struct stat的指针,指针不具有st_mode个字段。要获取st_mode指向的struct stat buf字段,请使用(*buf).st_mode或简称buf->st_mode