打印一个Char *

17

提前道歉,因为问题可能有些愚蠢!

这是我的结构体定义:

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

编译时出现警告:"warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’"

%c不是代表char*的符号吗?

3个回答

27
你想使用%s,它用于字符串(char*)。%c用于单个字符(char)。
类型后面的星号*将其变为对该类型的指针。因此,char*实际上是一个指向字符的指针。在C语言中,通过传递字符串第一个字符的指针来按引用传递字符串。通过将字符串最后一个字符后的字节设置为NULL(0),确定字符串的结尾。

5

char *的属性类型编码是%s%c表示一个char(不是指针,只是一个单一的char


3

除非你有未告知我们的typedef,否则你应该像这样声明vcard_show()

void vcard_show(struct vcard *c)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接