gpt4 book ai didi

c - 如何打印结构并对其进行 memcpy?

转载 作者:行者123 更新时间:2023-11-30 19:26:44 25 4
gpt4 key购买 nike

我有以下结构 -

struct data
{
unsigned char r;
int f;
};

然后我尝试打印它,但在打印语句中出现段错误。我做错了什么以及如何进行 memcpy 和打印?

struct data *data1;
char temp[10];
data1->r = 1; data1->f = 2;
memcpy(temp,(char *)(struct data *)data1, sizeof(struct data));
printf("buffer is %s\n",temp );

最佳答案

您缺少内存分配。检查此代码并让我知道任何问题:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

struct data{
unsigned char r;
int f;
};

int main(){
struct data *data1=(struct data*)malloc(sizeof(struct data));
char temp[100];

data1->r = 255; data1->f = 1;
memcpy(temp, data1, sizeof(struct data));

printf("size of struct: %d\n", (int)sizeof(struct data));
printf("buffer is: \n");
//code to print the buffer in binary in chunks of 4
for(int i=0; i<sizeof(struct data); i++){
char v=temp[i];
for(int j=0; j<8*sizeof(char); j++){
if(v & 1)
printf("1");
else
printf("0");
v>>=1;
}
if((i+1)%4==0) printf("\n");
else printf(" ");
}
printf("\n");
};

输出:

size of struct: 8
buffer is:
11111111 00000000 00000000 00000000 //r
10000000 00000000 00000000 00000000 //f

数据实际上被复制了

关于c - 如何打印结构并对其进行 memcpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56710759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com