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);
}
Tại sao tính năng này không hoạt động? Tôi đã thử rất nhiều với scanf này, nhưng, khi tôi dự trữ bộ nhớ cho biến của tôi một * (bằng cách gán một = b (nhận xét)) nó hoạt động tốt. Nếu không thì không. Tôi tin rằng char * a sẽ cấp phát một số bộ nhớ cho chuỗi của nó, ("goodone") và trả về vị trí bộ nhớ đó với giá trị của nó. Và printf làm việc tốt với niềm tin này tại sao scanf không? hãy lưu tôi khỏi điều này ....Tại sao scanf không hoạt động như mong đợi khi ghi vào chuỗi ký tự?
Tôi đặc biệt khuyên bạn nên đọc [C FAQ entry] (http://c-faq.com/aryptr/aryptr2.html) cho câu hỏi này. – Lundin
Điều này chắc chắn là một đọc tốt: [Sự khác biệt giữa char a \ [\] = "string"; và char * p = “string”;] (http://stackoverflow.com/questions/9460260/what-is-the-difference-between-char-a-string-and-char-p-string) –