2013-03-08 3 views
7

Извиняюсь заранее за немой вопрос!Печать Char *

Вот моя структура Защита:

struct vcard { 
    char *cnet; 
    char *email; 
    char *fname; 
    char *lname; 
    char *tel; 
}; 

Я пытаюсь напечатать представление этой структуры с функцией vcard_show (визитная карточка * с), но компилятор откинув предупреждение о:

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

При компиляции: «предупреждение: формат„% с“ожидает типа„Int“, но аргумент 2 имеет тип„символ *“»

не% с символом для полукокса *?

ответ

13

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

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

+1

Большое спасибо! –

5

Кодировка типа собственности для char * - %s. %c является для char (не указатель только одного char)

+1

Спасибо большое за помощь! –

2

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

void vcard_show(struct vcard *c) 
+1

Да, я опустил свой typedef! Однако, спасибо. –

Смежные вопросы