2014-02-08 39 views
0

我的程序要求客戶端輸入名稱,每次int num增加1.我的問題是當我printf的信息int num顯示數千!我認爲它顯示的地址。如何打印一個int結構成員

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,000。

+2

你在哪裏初始化' PB [I] .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」哪m是指合同「輸出字符串

這是正確的

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

即使固定的,我覺得沒有什麼去上班:你沒有初始化pb[i].num

相關問題