#include <stdio.h>
int main(void)
{
int i,j,k;
char st;
printf("enter string\n");
scanf("%s", st);
printf("the entered string is %s\n", st);
}
कार्यक्रम ऊपर संकलन मुझे एक चेतावनी देता है तर्क की उम्मीद है?प्रारूप '% s' प्रकार के 'चार *'
यह जब मैं इसे चलाने के क्या होता है:
$ ./a.out
enter string
kiaaa
the entered string is (null)
संपादित करें:
#include <stdio.h>
int main(void)
{
int i,j,k;
char *st;
printf("enter string\n");
scanf("%s", st);
printf("the entered string is %s\n", st);
}
हालांकि:
यहाँ कोड (char *st
में char st;
बनाया) का एक और संस्करण है , यह रनटाइम पर समान व्यवहार करता है।
काम करेगा अब आपका 'char * st;' एक अनियंत्रित सूचक है। आप नहीं जानते कि यह कहां इंगित करता है। 'स्कैनफ'' में इसे एक्सेस करना अपरिभाषित व्यवहार है। आपको इसे वैध स्मृति के पर्याप्त बड़े हिस्से को इंगित करना होगा। या तो एक सरणी 'char st [100] घोषित करें; '- सरणी नाम को' स्कैनफ़' या 'printf'' के तर्क के रूप में पारित होने पर पॉइंटर में परिवर्तित किया जाता है, तो यह ठीक है - या इसे पॉइंटर के रूप में घोषित करें, जैसा कि आपके पास है, और कुछ स्मृति आवंटित करें, 'st = malloc (100 * sizeof * st); इसका उपयोग करने से पहले। आपको 'malloc' के लिए '#' शामिल करना होगा, और जांचें कि 'malloc'' NULL' लौटा है या नहीं। –