打印字符*

时间:2013-03-08 00:18:38

标签: c char printf

我提前为这个愚蠢的问题道歉!

这是我的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 *的符号吗?

3 个答案:

答案 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)