我的程序要求客户端输入名称,每次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加上一些东西。
答案 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