Печать Чаре *

заранее извиняюсь за глупый вопрос!

вот моя структура 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: %cn", c->fname);
    printf("Last Name: %cn", c->lname);
    printf("CNet ID: %cn", c->cnet);
    printf("Email: %cn", c->email);
    printf("Phone Number: %cn", c->tel);
}

при компиляции: "предупреждение: формат" %c "ожидает тип "int" , но аргумент 2 имеет тип " char *""

разве %c не является символом char*?

3 ответов


вы хотите использовать %s, что для строк (char*). %c для одиночных символов (char).

звездочка * после типа делает его указателем на тип. Так что char* на самом деле является указателем на символ. В C строки передаются по ссылке путем передачи указателя на первый символ строки. Конец строки определяется путем установки байта после последнего символа строки в значение NULL (0).


кодировка типа свойства для A char * is %s. %c на char (не указатель только один char)


Если у вас нет typedef, о котором Вы нам не говорите, вы, вероятно, должны объявить vcard_show() такой:

void vcard_show(struct vcard *c)