15

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

这是我的结构定义:

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

4

3 回答 3

25

您想使用%s,它用于字符串 (char*)。%c用于单个字符(char)。

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

于 2013-03-08T00:20:44.510 回答
5

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

于 2013-03-08T00:20:35.867 回答
3

除非你有一些你没有告诉我们的 typedef,否则你应该vcard_show()这样声明:

void vcard_show(struct vcard *c)
于 2013-03-08T00:27:12.870 回答