2014-02-08 4 views
0

내 프로그램은 클라이언트에게 이름을 입력하고 int num이 1 씩 증가 할 때마다 묻습니다. 내 문제는 int num이 정보를 printf 할 때입니다. 주소가 나와 있다고 생각합니다.printf 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 초기화, 자동은 [I] .num ++, 다음 인쇄 (PB)을 사용하여 추가, 하지만 인쇄 할 때 1 또는 2가 아니라 7thousand 플러스가 표시됩니다.

+2

를 초기화하지 않는 당신이'초기화 할 pb [i] .num'? –

답변

4

형식 토큰에 문자열 토큰이 누락되었습니다. 이 시도 : @Oli 찰스 워드가 주석으로

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

또한, 당신은 pb[].num 변수, 첫 번째 한 모든 initilaise하지 않습니다. 그래서

이 코드에는 "문자열"출력 없습니다 ..이

pb[i].num = i; 
1
내가 멀리 다른 문제를 떠나 메인 하나에 초점을 맞출 것이다

은이

pb[0].num = 1; 

교체 "% d"은 "은 정수를 출력합니다."을 의미하지만 "%"이 표시되지 않습니다. EAN과 "출력 문자열"

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

, 나는 생각하지 않는다 아무것도 작동 것 올바른 : 당신이 pb[i].num

관련 문제