Как распечатать член структуры int
Моя программа просит клиента ввести имя, и каждый раз, когда 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 ответа
Вам не хватает строкового токена в строке формата. Попробуй это:
printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);
Кроме того, как прокомментировал @Oli Charlesworth, вы не начинаете все pb[].num
переменные, только первая. Так замени это
pb[0].num = 1;
С этим
pb[i].num = i;
Я оставлю другие проблемы и сосредоточусь на главном.
В вашем коде нет вывода "string", "% d" означает "вывести целое число", но я не вижу "% s", что означает "вывести строку"
Это правильно
printf("Contact no %d\nName: %s", pb[i].num, pb[i].name);
Даже если это исправить, я не думаю, что что-то сработает: вы не инициализируете pb[i].num