重複の可能性:
char* を変更できません - メモリ アクセス違反
MingW でコンパイルした C プログラムの問題を追跡していて、最終的に以下の非常に単純なテストケースに行き着きました。
もちろん、意図は文字列内の文字を変更することです。しかし、このコードではセグメンテーション違反が発生します。誰かが理由を説明してもらえますか? 理解できません...
test.c:
#include <stdio.h>
main(){
char *s = "xx";
printf("(%s)\n", s);
s[0] = 'z'; // ** Segmentation fault here **
printf("(%s)\n", s);
}
--
$ gcc -c test.c
$ gcc -o test.exe test.o
$ ./test.exe
(xx)
Segmentation fault