结构体初始化的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:59:40
我用的是memset初始化的结构体
typedef struct
{int ID ;
int NO;
INFO info;
}LOGOUT

LOGOUT plogout
memset(&plogout,0x00,sizeof(plogout));
printf..............?

请问各位高人,我的初始化用得对不对?
现在想把结构体的初始化结果(0)都打出来,
不想一个一个成员的打印,一口气打出一列0就行。
这个打印语句怎么写?谢谢了。
INFO 为子结构体

printf("plogout = %x/n",plogout);
输出为结构体 LOGOUT 的头地址,不是结构体力的内容。

从开头打印到结尾,用循环就可以了

int i;
char *p=(char *)&plogout;
for(i=0;i<sizeof(LOGOUT);i++)
printf("%02x ", p[i]);/* 16进制输出 */

void *memset(void *s, int c, size_t n)的用途是将字符串中的n个字节内容设置为c ,你的结构体里面定义的都是int型怎么可以呢?字符c的格式为'*',不能是0x00 。
你的程序修改如下:
#include <stdio.h>
#include <string.h>

typedef struct
{char ID ;
char NO;
}LOGOUT;

void main()
{
LOGOUT plogout;
int i=sizeof(LOGOUT);
memset(&plogout,'*',sizeof(LOGOUT));
while(i--)
printf("%c",plogout);
}

#include <stdio.h>
#include <memory.h>

#if defined(_MSC_VER ) && defined(__cplusplus)
#include <iostream>
using namespace std;
#endif

typedef struct
{
int ID ;
int NO;
int info; // 代码不全,姑且如此
}LOGOUT;

void main()
{
LOGOUT plogout;
memset( &plogout,0x00