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);
}
왜 작동하지 않습니까? 나는이 scanf로 많은 시도를했지만, 변수를 a * (할당 한 = b (주석 처리 됨)) 메모리를 예약하면 정상적으로 작동합니다. 그렇지 않으면 그렇지 않습니다. char * a는 문자열에 메모리를 할당하고 그 메모리 위치를 값으로 반환한다고 생각합니다. 그리고 printf는 왜 scanf가 아닌지이 믿음으로 잘 작동합니까? 나를 구 해주십시오.문자열 리터럴에 쓸 때 scanf가 예상대로 작동하지 않는 이유는 무엇입니까?
이 질문에 대해서는 [C FAQ 항목] (http://c-faq.com/aryptr/aryptr2.html)을 읽기를 강력히 권장합니다. – Lundin
이것은 확실히 좋은 읽을 거리입니다. [char a \ [\] = "string"의 차이점은 무엇입니까? 및 char * p = "string";] (http://stackoverflow.com/questions/9460260/what-is-the-difference-between-char-a-string-and-char-p-string) –