include<stdio.h>
int main()
{
//char b[10];
char *a="goodone";
//a=b;
scanf("%s",a);//this scanf fails and thow segmentation fault.
printf("%s",a);
}
यह क्यों काम नहीं कर रहा है? मैंने इस स्कैनफ के साथ बहुत कोशिश की लेकिन, जब मैं अपने चर के लिए स्मृति आरक्षित करता हूं * (एक = बी (टिप्पणी) असाइन करके) यह ठीक काम करता है। अन्यथा यह नहीं है। मेरा मानना है कि char * a अपनी स्ट्रिंग के लिए कुछ मेमोरी आवंटित करेगा, ("अच्छा") और उस मेमोरी लोकेशन को उसके मान पर वापस कर देगा। और printf इस विश्वास के साथ ठीक काम क्यों स्कैन नहीं? कृपया मुझे इस से बचाने ....एक स्ट्रिंग अक्षर पर लिखते समय स्कैनफ़ अपेक्षित रूप से क्यों काम नहीं कर रहा है?
मैं इस प्रश्न के लिए [सी एफएक्यू एंट्री] (http://c-faq.com/aryptr/aryptr2.html) पढ़ने की दृढ़ता से अनुशंसा करता हूं। – Lundin
यह निश्चित रूप से एक अच्छा पठन है: [char \ \ \] = "string" के बीच क्या अंतर है; और char * p = "string";] (http://stackoverflow.com/questions/9460260/what-is-the-difference-between-char-a-string-and-char-p-string) –