2013-03-08 92 views
7

對於愚蠢的問題,我提前道歉!打印一個字符*

這裏是我的結構DEF:

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

我想打印這個結構與功能vcard_show(虛擬卡* C)的表示,但是編譯器拋出回一個警告:

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

當編: 「警告:格式 '%C' 型預計 'INT',但實參2的類型爲 '字符*'」

是不是%C爲字符符號*?

回答

13

你想用%s,這是字符串(字符*)。 %c適用於單個字符(char)。

星號*類型使它成爲類型指針。所以char*實際上是一個指向角色的指針。在C中,通過將指針傳遞給字符串的第一個字符來引用字符串。字符串的結尾是通過將字符串的最後一個字符後面的字節設置爲NULL(0)來確定的。

+1

非常感謝! – 2013-03-08 00:22:14

5

char *的屬性類型編碼爲%s%c是一個char(不是指針只是一個單一的char

+1

非常感謝您的幫助! – 2013-03-08 00:23:21

2

除非你有一些類型定義你不告訴我們,你應該申報vcard_show()這樣的:

void vcard_show(struct vcard *c) 
+1

是的,我省略了我的typedef!不過謝謝你。 – 2013-03-08 00:29:57