C言語においてchar配列に文字列を代入する際にエラーが発生することがあります。
本記事ではその際のエラーの原因と対処方法について解説します。
初心者でも理解しやすいように分かりやすい例を交えながら解説します。
char配列文字列代入時のエラーの原因
C言語においてchar配列に文字列を代入する際に以下のようなエラーが発生することがあります。
char myString[10];
myString = "Hello";
上記のようなコードをコンパイルすると次のようなエラーが発生します。
error: incompatible types in assignment of 'const char [6]' to 'char [10]'
このエラーは文字列リテラル(”Hello”などの文字列)は定数であり、それをchar配列に直接代入することができないというものです。
文字列に代入できない時の対処法
このエラーへの対処方法として、以下の方法があります。
1. 文字列コピー関数を使用する
C言語では文字列をstrcpy関数やstrncpy関数を使用してコピーすることができます。
これにより文字列リテラルをchar配列に正しく代入できます。
#include
#include
int main() {
char myString[10];
strcpy(myString, "Hello");
// 以下、myStringの使用例
printf("myString: %s\n", myString);
return 0;
}
2. 文字列リテラルをconst char配列にする
文字列リテラルをconst char配列に代入することは許可されています。
その後、const char配列から必要に応じてchar配列にコピーすることができます。
#include
int main() {
const char *myStringLiteral = "Hello";
char myString[10];
// 文字列のコピー
while ((*myString++ = *myStringLiteral++));
// 以下、myStringの使用例
printf("myString: %s\n", myString - 6); // 文字列の長さが6なので、元の文字列に戻すために6を引く
return 0;
}
ガマくん
strcpyを使わないで文字列をコピーする方法を以下記事で紹介しているよ
[C言語]strcpyを使わないで文字列をコピー!基本的な複写方法についても
C言語において、文字列をコピーする方法にはいくつかのアプローチがあります。この記事では、strcpy 関数を使用せずに文字列をコピーする方法と、同じ処理を strcpy 関数を使って行う方法について解説します。どちらの方法も理解することで、文字列処理の基本的な考え方を深めることができます。
広告
まとめ
C言語においてchar配列に文字列を代入する際のエラーには文字列コピー関数を使用するか、文字列リテラルをconst char配列にしてからコピーするといった対処方法があります。
適切な方法を選択し正しく文字列を扱うよう心がけましょう。