- ベストアンサー
文字型の変数に文字を格納しようとするとエラー
凄く簡単なことだと思うのですが 文字型の変数に文字を格納しようとすると エラーになってしまいます。 char yobi[10]; yobi = "日曜日"; ご教授して頂けたら幸いです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。直接的な回答は#2さんをご覧ください。 で、エラーにならない方法ですが。 もし文字列を固定値のまま扱うのであれば char *yobi; yobi = "日曜日"; # ただ、日本語を扱うのであればunsignedにしておいたほうがよいです。 文字列をあとでいじる可能性があるなら char yobi[10]; strcpy(yobi, "日曜日"); または char yobi[10]; strncpy(yobi, "日曜日", sizeof(yobi)); となります。 なお、strcpyにおいてはバッファオーバフロウの可能性を、strncpyにおいては「文字列が\0で終わっていない可能性を」それぞれ考慮してください。 …で、考慮するのが面倒なら char yobi[10]; memset(yobi, '\0', sizeof(yobi) ); strncpy(yobi, "日曜日", sizeof(yobi) -1 ); ってやりかたもあります :-P それぞれが「メモリ中でどのようにデータが動いているのか」を理解しつつ読んでいただければ幸いです。
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
> エラーの回避方法です。 char yobi[10] = "日曜日"; これで済むのでは? この後で何をしたいのか分かりませんが、この部分だけに限れば、上記で十分です。 エラーの原因については既に回答が出ている通りです。
- rinkun
- ベストアンサー率44% (706/1571)
yobiは文字型ではありません。文字型の配列型です。 また"日曜日"は文字列リテラルで、この型は文字型へのポインタ型です。 型が一致しないのでエラーになるのは当然ですね。 C言語には文字列を直接に扱う機能はありません。 通常は標準ライブラリ関数を利用して処理します。
- jacta
- ベストアンサー率26% (845/3158)
> ご教授して頂けたら幸いです。 質問が不明確です。何を知りたいのでしょうか? エラーの原因?それともエラーの回避方法?
補足
説明不足ですいません。 エラーの回避方法です。 出来ましたら原因も ご教授して頂けたら幸いです。 よろしくお願いします。