2013-03-08 9 views
7

प्रिंटिंग मैं बेवकूफ सवाल के लिए पहले से माफी माँगता हूं!एक चार्ट *

यहाँ मेरी struct डीईएफ़ है:

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

मैं समारोह vcard_show (vCard * ग) के साथ इस struct का प्रतिनिधित्व मुद्रित करने के लिए कोशिश कर रहा हूँ, लेकिन संकलक वापस एक चेतावनी फेंक जाता है:

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 टाइप 'चार *' है" *

% c चार के लिए प्रतीक नहीं है?

उत्तर

13

आप %s उपयोग करने के लिए, जिसके लिए तार (चार *) है चाहते हैं के लिए है। %c एकल वर्णों (चार) के लिए है।

एक प्रकार के बाद एक तारांकन * इसे टाइप करने के लिए एक सूचक बनाता है। तो char* वास्तव में एक चरित्र के लिए एक सूचक है। सी में, तारों को स्ट्रिंग के पहले अक्षर में पॉइंटर पास करके पास-दर-संदर्भ होते हैं। स्ट्रिंग का अंत स्ट्रिंग के अंतिम अक्षर के बाद NULL (0) के बाद बाइट सेट करके निर्धारित किया जाता है।

+1

बहुत बहुत धन्यवाद! –

5

char * के लिए संपत्ति प्रकार एन्कोडिंग %s है। %c एक char (नहीं सूचक बस एक ही char)

+1

धन्यवाद मदद के लिए एक बहुत! –

2

जब तक आप कुछ typedef आप हमारे बारे में बता नहीं कर रहे हैं, तो आप शायद vcard_show() इस तरह की घोषणा करना चाहिए:

void vcard_show(struct vcard *c) 
+1

हां, मैंने अपना टाइपपीफ छोड़ा! फिर भी आपका धन्यवाद। –

संबंधित मुद्दे