打印字符*

Ale*_*ols 10 c printf char

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

这是我的结构def:

struct vcard {
  char *cnet;
  char *email;
  char *fname;
  char *lname;
  char *tel;
};
Run Code Online (Sandbox Code Playgroud)

我试图用函数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);
}
Run Code Online (Sandbox Code Playgroud)

编译时:"警告:格式'%c'需要类型'int',但参数2的类型为'char*'"

%c不是char*的符号吗?

小智 18

你想使用%s,这是为字符串(char*).%c用于单个字符(char).

*类型后面的星号使其成为指向类型的指针.所以char*实际上是一个指向角色的指针.在C中,通过将指针传递给字符串的第一个字符来传递字符串.字符串的结尾是通过将字符串的最后一个字符后面的字节设置为NULL(0)来确定的.


Dan*_*imm 5

a的属性类型编码char *%s.%c是为了char(不是指针只是一个char)