• ベストアンサー

文字型の変数に文字を格納しようとするとエラー

凄く簡単なことだと思うのですが 文字型の変数に文字を格納しようとすると エラーになってしまいます。 char yobi[10]; yobi = "日曜日"; ご教授して頂けたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。直接的な回答は#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)
回答No.4

> エラーの回避方法です。 char yobi[10] = "日曜日"; これで済むのでは? この後で何をしたいのか分かりませんが、この部分だけに限れば、上記で十分です。 エラーの原因については既に回答が出ている通りです。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

yobiは文字型ではありません。文字型の配列型です。 また"日曜日"は文字列リテラルで、この型は文字型へのポインタ型です。 型が一致しないのでエラーになるのは当然ですね。 C言語には文字列を直接に扱う機能はありません。 通常は標準ライブラリ関数を利用して処理します。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> ご教授して頂けたら幸いです。 質問が不明確です。何を知りたいのでしょうか? エラーの原因?それともエラーの回避方法?

wee
質問者

補足

説明不足ですいません。 エラーの回避方法です。 出来ましたら原因も ご教授して頂けたら幸いです。 よろしくお願いします。

関連するQ&A