小编Sre*_*ree的帖子

stat()在c中给出错误的目录大小

我需要使用stat()找到命令行中给出的文件或目录的大小.它适用于文件(相对路径和绝对路径),但是当我给出一个目录时,它总是返回512或1024的大小.

如果我打印目录中的文件,它如下所示:

 Name : .
 Name : ..
 Name : new
 Name : new.c
Run Code Online (Sandbox Code Playgroud)

但实际上只有new和new.c文件存在.为此,即使我在目录中放置了更多文件,大小也会返回512.这是我的代码片段:

if (stat(request.data,&st)>=0){
        request.msgType = (short)0xfe21;
        printf("\n Size : %ld\n",st.st_size);
        sprintf(reply.data,"%ld",st.st_size);
        reply.dataLen = strlen(reply.data);
    }
    else{
        perror("\n Stat()");
    }
}
Run Code Online (Sandbox Code Playgroud)

我哪里做错了???

这是我的要求,回复结构:

 struct message{
        unsigned short msgType;
        unsigned int offset;
        unsigned int serverDelay;
        unsigned int dataLen;
        char data[100];
    };
struct message request,reply;
Run Code Online (Sandbox Code Playgroud)

我在unix os中的gcc编译器中运行它.

c struct message stat reply

3
推荐指数
1
解决办法
5171
查看次数

标签 统计

c ×1

message ×1

reply ×1

stat ×1

struct ×1