【问题标题】:Printing a Char *打印一个字符 *
【发布时间】:2013-02-23 10:27:00
【问题描述】:

对于这个愚蠢的问题,我提前道歉!

这是我的结构定义:

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

【问题讨论】:

    标签: c char printf


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        void vcard_show(struct vcard *c)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-11-23
          • 2020-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-11
          • 1970-01-01
          相关资源
          最近更新 更多