Imprimir uma barra *
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*?
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).
A codificação do tipo de propriedade para um char *
é %s
. {[2] } é para um char
(não o ponteiro apenas um único char
)
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)