2013-03-08 95 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