[解決済み] 文字列を文字の配列に代入する
2023-06-10 21:26:10
質問
次のことに少し驚いています。
例1:
char s[100] = "abcd"; // declare and initialize - WORKS
例2:
char s[100]; // declare
s = "hello"; // initalize - DOESN'T WORK ('lvalue required' error)
なぜ2番目のアプローチがうまくいかないのか不思議です。他のデータ型では動作する)のが自然だと思うのですが?どなたかこの背後にある論理を説明していただけませんか?
どのように解決するのですか?
C言語では、配列を初期化する際に、その配列を値で埋めることができます。そのため
char s[100] = "abcd";
とは基本的に同じです。
int s[3] = { 1, 2, 3 };
が、これでは代入ができないので
s
は配列であり、フリーポインタではないので、代入はできません。の意味は
s = "abcd"
のポインタ値を代入することです。
abcd
を
s
を変更することはできませんが
s
を変更すると、配列を指すものがなくなってしまうからです。
これは、もし
s
が
char*
- を指し示すことができるポインタです。
文字列をコピーしたい場合は、単純に
strcpy
.
関連
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
C++の配列コピー
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] Xcode - 警告。C99 では関数の暗黙の宣言は無効です。
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] C言語で%sを正しく使う - 超基本レベル
-
[解決済み] ソケットアクセプト - "開かれているファイルが多すぎる"
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
未定義の `__isoc99_sscanf' への参照
-
C/C++の再定義
-
エラー: 宣言されていない識別子 'bool' の使用と C コンパイラでの問題点
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] C言語で%sを正しく使う - 超基本レベル
-
[解決済み] char *とchar[]の違い [重複]
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] C 言語の配列へのポインタ/ポインタの配列の曖昧さ解消
-
[解決済み] なぜ16進数には0xがつくのですか?