Imprimir uma barra *

Peço desculpa antecipadamente pela pergunta estúpida!

Aqui está a minha estrutura.
struct vcard {
  char *cnet;
  char *email;
  char *fname;
  char *lname;
  char *tel;
};

estou a tentar imprimir uma representação desta estrutura com a função vcard_ show( vcard * C), mas o compilador está a lançar um aviso:

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

quando compilado: "atenção: o formato' % c 'espera o tipo 'int', mas o argumento 2 tem o tipo 'char * '"

%c não é o símbolo de char*?

Author: Eduen, 2013-03-08

3 answers

Você quer usar %s, que é para cadeias de caracteres (char*). %c é para caracteres simples (char).

Um asterisco * Depois de um tipo faz dele um ponteiro para digitar. Então char* é na verdade um ponteiro para um personagem. Em C, strings são passadas-por-referência passando o ponteiro para o primeiro caráter da string. O fim da cadeia é determinado configurando o byte após o último caractere da cadeia para nulo (0).

 15
Author: Jonathon Simister, 2013-03-08 00:20:44

A codificação do tipo de propriedade para um char * é %s. {[2] } é para um char (não o ponteiro apenas um único char)

 5
Author: DanZimm, 2013-03-08 00:20:35

A menos que tenha algum tipo de pessoa de que não nos está a falar, provavelmente devia declarar vcard_show() Assim:

void vcard_show(struct vcard *c)
 2
Author: Crash Magnet, 2017-05-25 10:15:18