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 *保留內存(通過賦值a = b(註釋))時,它工作正常。否則它不會。 我相信char * a將爲它的字符串(「goodone」)分配一些內存並將該內存位置返回給它的值。和printf工作很好,這個信念爲什麼scanf不是? 請從這裏節省我......爲什麼scanf在寫入字符串文字時無法按預期工作?
我強烈建議閱讀這個問題的[C FAQ條目](http://c-faq.com/aryptr/aryptr2.html)。 – Lundin 2012-02-15 10:56:10
這絕對是一個很好的閱讀:[char a \ [\] =「string」之間的區別是什麼?和char * p =「string」;](http://stackoverflow.com/questions/9460260/what-is-the-difference-between-char-a-string-and-char-p-string) – 2012-05-29 09:32:38