2013-03-08 24 views
7

Przepraszam z góry za głupie pytanie!Drukowanie Char *

Oto moja struct def:

struct vcard { 
    char *cnet; 
    char *email; 
    char *fname; 
    char *lname; 
    char *tel; 
}; 

Próbuję wydrukować reprezentacji tej struktury z vcard_show funkcji (vcard * c), ale kompilator rzuca ostrzeżenia powrotem:

void vcard_show(struct vcard *c) 
{ 
    printf("First Name: %c\n", c->fname); 
    printf("Last Name: %c\n", c->lname); 
    printf("CNet ID: %c\n", c->cnet); 
    printf("Email: %c\n", c->email); 
    printf("Phone Number: %c\n", c->tel); 
} 

Przy opracowaniu: "Uwaga: format '% c' oczekuje typu 'int', ale argumentem 2 ma typ char * ''"

nie Czy% c symbolem char *?

Odpowiedz

13

Chcesz użyć %s, czyli ciągów (char *). %c jest dla pojedynczych znaków (char).

Gwiazdka * po typie powoduje, że jest to wskaźnik do wpisywania. Więc char* jest właściwie wskaźnikiem do postaci. W języku C ciągi są przekazywane przez odniesienie, przekazując wskaźnik do pierwszego znaku ciągu. Koniec łańcucha jest określany przez ustawienie bajtu po ostatnim znaku ciągu na NULL (0).

+1

Dziękuję bardzo! –

5

Kodowanie typu właściwości dla char * to . %c jest dla char (nie wskaźnik tylko jednego char)

+1

dziękuję za pomoc! –

2

Chyba że masz jakieś typedef nie mówią nam o, powinieneś zadeklarować vcard_show() takiego:

void vcard_show(struct vcard *c) 
+1

Tak, pominąłem mój typedef! Ale dziękuję. –