Как распечатать член структуры 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

Другие вопросы по тегам