C 如何打印int结构成员

C 如何打印int结构成员,c,struct,printf,member,C,Struct,Printf,Member,我的程序要求客户端输入name,每次int num增加1。我的问题是当我打印信息时,int num显示数千!我想它显示了地址 typedef struct myphonebook { int num; char name[31]; char address[101]; char cellphone[11]; char email[21]; } Myphonebooktype; Myphonebooktype *pb = NULL; for(i = ad

我的程序要求客户端输入name,每次int num增加1。我的问题是当我打印信息时,int num显示数千!我想它显示了地址

typedef struct myphonebook {
    int num;
    char name[31];
    char address[101];
    char cellphone[11];
    char email[21];
} Myphonebooktype;

Myphonebooktype *pb = NULL;

for(i = addcounter, cc = addcounter + 1; i < 21; i++, cc++) {

    pb = (Myphonebooktype*)realloc(pb,cc*sizeof(Myphonebooktype));

    pb[0].num = 1;

    printf("Add a contact\n");

    printf("Contact no. %d\nEnter name);
    gets(pb[i].name);
    pb[i].num++;            
}

我将pb[0].num(第一个)初始化为1,并使用pb[I].num++自动添加,然后打印,但打印时显示的不是1或2,而是7000多个字符。

格式字符串中缺少字符串标记。试试这个:

printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);
此外,正如@Oli Charlesworth所评论的,您不会初始化所有
pb[].num
变量,只初始化第一个变量。所以换掉这个

pb[0].num = 1;
用这个

pb[i].num = i;

格式字符串中缺少字符串标记。试试这个:

printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);
此外,正如@Oli Charlesworth所评论的,您不会初始化所有
pb[].num
变量,只初始化第一个变量。所以换掉这个

pb[0].num = 1;
用这个

pb[i].num = i;

我将把其他问题抛在脑后,集中讨论你的主要问题

代码中没有“字符串”输出,“%d”表示“输出一个整数”,但我没有看到任何“%s”表示“输出一个字符串

这是正确的

printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);

即使修复了,我也不认为任何事情会起作用:您没有初始化
pb[I].num

我将忽略其他问题,专注于您的主要问题

代码中没有“字符串”输出,“%d”表示“输出一个整数”,但我没有看到任何“%s”表示“输出一个字符串

这是正确的

printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);

即使修复了,我也不认为任何事情会起作用:你没有初始化
pb[I].num

你在哪里初始化
pb[I].num
?你在哪里初始化
pb[I].num