C言語 文字列の初期化
解決したいこと
C言語で
const char* strに
{'A','B','C','D','\0','A','B'} という文字配列を代入したいのですが何か方法はあるでしょうか?
用途としては、memchrを自作していて、終端文字以降もメモリブロックの中身が一致しているかを確かめるために、終端文字以降にも
下記のソースコードのように代入してもうまくいきません。
どなたたか方法をご存知の方がいればご教示ください。
また、なぜ下記のパターン1〜4の代入方法がエラーとなるのでしょうか?
該当するソースコード
int main(void){
//パターン1 エラーとなる
const char* str = "ABCD";
str[4] = '\0';
str[5] = 'A';
str[5] = 'B';
//パターン2 これもエラーとなる
const char* str = "ABCD";
str + 4 = '\0';
str + 5 = 'A';
str + 6 = 'B';
//パターン3 これもエラーとなる
const char* str = "ABCD";
*(str + 4) = '\0';
*(str + 5) = 'A';
*(str + 6) = 'B';
//パターン4 これもエラーとなる
const char* str[7] = {'A','B','C','D','\0','A','B'} ;
return 0;
}