2014-02-08 3 views
0

Моя программа запрашивает у клиента имя ввода и каждый раз, когда число int увеличивается на 1. Моя проблема в том, когда я печатаю информацию, которую int num показывает тысячи! Я думаю, что он показывает адрес.Как напечатать элемент int struct

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); 

Я инициализировать рь [0] .num первый только один, и авто добавить с помощью пб [I] .num ++, а затем распечатать, но когда я печатаю, это показывает мне не 1 или 2, а 7thousand что-то плюс.

+2

Где вы инициализируете ' рь [я] .num'? –

ответ

4

Вам не хватает символа строки в строке формата. Попробуйте это:

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

Кроме того, как отметил @Oli Чарльзуорт, вы не initilaise все pb[].num переменных, только первый. Так заменить этот

pb[0].num = 1; 

С этой

pb[i].num = i; 
1

Я оставляю другие вопросы в стороне и сосредоточиться на главном один ..

Там нет «строки» выхода в коде , "% d" означает "вывести целое число", но я не вижу никаких "% s", которые м Eans «выхода строка»

Это правильно

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

Даже если фиксировано, я не думаю, что это будет работать: вы не инициализируетесь pb[i].num

Смежные вопросы