C 如何打印一个结构并存储它?

C 如何打印一个结构并存储它?,c,struct,C,Struct,我有以下结构- struct data { unsigned char r; int f; }; 然后我尝试打印它,但在print语句中出现了一个分段错误。我做错了什么?我该如何做记忆和打印 struct data *data1; char temp[10]; data1->r = 1; data1->f = 2; memcpy(temp,(char *)(stru

我有以下结构-

struct data
{
unsigned char r;
int f;
};
然后我尝试打印它,但在print语句中出现了一个分段错误。我做错了什么?我该如何做记忆和打印

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");
};

数据实际上被复制了

您是否试图将结构转换为字符流?@IvanGonzalez-是的。我想将结构打印为字符流在C中,不要强制转换调用堆分配函数返回的值:
malloc()
calloc()
,和
realloc()
只有在其运行的系统是
小端时,发布的数据才是正确的,即“大端”系统将显示与以下有关的结果数据的显著不同(顺序):
(int j=0;j输出:
size of struct:8
仅在底层硬件体系结构为32位时为真。如果底层硬件体系结构为64位,则值将为16,并且仅输出前1/2的数据。i添加8*sizeof(char)为了可读性。为什么不推荐选角?我打印的数据只是为了参考,我并不是为了正确的顺序,只是为了显示一些参考。
size of struct: 8
buffer is:
11111111 00000000 00000000 00000000 //r
10000000 00000000 00000000 00000000 //f