memcpy然后是printf,调用stat(),写入缓冲区;

时间:2018-07-18 02:26:21

标签: c printf system-calls memcpy

这是包含项和我的功能:

我正在尝试将stbuf->st_mode复制到缓冲区memcpy中,并且在读回时,值不是我要复制的内容。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string.h>

void r1_getattr(char* pth, int cfd){
    struct stat* stbuf = malloc(sizeof(stat));

    int res = stat(pth, stbuf);

    printf("(%3o)\n", (stbuf->st_mode)&0777);
    char* wbuf = malloc(256);

    memcpy(wbuf, &(stbuf->st_mode), sizeof(mode_t));
    printf("(%3o)\n", (*(mode_t*)((char*)wbuf))&0777);
}

输出:“(775)”和“(21)”不应该相同吗?

1 个答案:

答案 0 :(得分:3)

简单的输入错误:

替换

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

使用

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

使用未初始化的内存时看到奇怪的结果总是很有趣:-)