我提前为这个愚蠢的问题道歉!
这是我的struct def:
struct vcard {
char *cnet;
char *email;
char *fname;
char *lname;
char *tel;
};
我正在尝试使用函数vcard_show(vcard * 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的类型为'char *'”
不是%c是char *的符号吗?
答案 0 :(得分:16)
您想使用%s
,这是用于字符串(char *)。 %c
用于单个字符(char)。
类型后面的星号*
使其成为指向类型的指针。所以char*
实际上是指向一个角色的指针。在C中,通过将指针传递给字符串的第一个字符来传递字符串。字符串的结尾是通过将字符串的最后一个字符后面的字节设置为NULL(0)来确定的。
答案 1 :(得分:5)
char *
的属性类型编码为%s
。 %c
用于char
(不是指针只是一个char
)
答案 2 :(得分:2)
除非你有一些你没有告诉我们的typedef,否则你应该像这样声明vcard_show()
:
void vcard_show(struct vcard *c)