memcpy 然后printf,调用stat(),写入buffer;
memcpy and then printf, calling stat(), writing in buffer;
这里有包含和我的功能:
我正在尝试使用 memcpy
将 stbuf->st_mode
复制到缓冲区中,当读回时,值不是我试图复制的值。
#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)”不应该相同吗?
简单的打字错误:
替换
struct stat *stbuf = malloc(sizeof(stat));
和
struct stat *stbuf = malloc(sizeof(struct stat));
当我们使用未初始化的内存时看到奇怪的结果总是很有趣:-)
这里有包含和我的功能:
我正在尝试使用 memcpy
将 stbuf->st_mode
复制到缓冲区中,当读回时,值不是我试图复制的值。
#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)”不应该相同吗?
简单的打字错误:
替换
struct stat *stbuf = malloc(sizeof(stat));
和
struct stat *stbuf = malloc(sizeof(struct stat));
当我们使用未初始化的内存时看到奇怪的结果总是很有趣:-)