如何printf一个int结构成员

时间:2014-02-08 10:06:35

标签: c struct printf member

我的程序要求客户端输入名称,每次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++;            
}

这是我的打印功能

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

我初始化pb [0] .num第一个只有一个,并使用pb [i] .num ++自动添加,然后打印,但是当我打印它时,显示我不是1或2而是7加上一些东西。

2 个答案:

答案 0 :(得分:4)

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

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

另外,正如@Oli Charlesworth评论的那样,你不会初始化所有pb[].num个变量,只会是第一个变量。所以替换这个

pb[0].num = 1;

有了这个

pb[i].num = i;

答案 1 :(得分:1)

我会把其他问题留下来,专注于你的主要问题..

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

这是正确的

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

即使已修复,我也认为没有任何工作:你没有初始化pb[i].num