重複の可能性:
文字列への書き込み時にセグメンテーション違反が発生するのはなぜですか?
文字列定数を変更しようとするとセグメンテーション違反が発生するのはなぜですか?
次の 2 つのコードを実行しようとしましたが、file2.c でセグメンテーション エラーが発生し ますが、 file1.cではエラーは発生しません。誰かが次のコードの違いを説明できますか:
file1.c
#include <stdio.h>
int main()
{
int i;
char string[11] = {"HelloThere"};
string[10] = '\0';
for(i =0;i<5;i++)
{
string[i] = 'a';
}
printf("%s\n",string);
}
と :
file2.c
#include <stdio.h>
int main()
{
int i;
char * string;
string = "HelloThere";
for(i =0;i<5;i++)
{
string[i] = 'a';
}
printf("%s",string);
}