プログラムの strncpy(sei, m_t + r1 * 2, 2); /* 正答の作成 / この部分について、r1は何文字目を穴にするかの値だと思うのですが、これを2倍にしてからm_tに足し合わせてる理由がわかりません。こうしてしまうと、m_tには四文字分しか文字がないのに、r12の値は4を超えてしまって空白を sei にコピーすることになりませんか?
この問題の正解は(36)から、ウ、ア、ア、ウ、エです
これっていつの問題ですか? というか、文字コードは指定されてませんか?
char mon[9]; ってことは、漢字 1 文字 2 バイトってことなんでしょうね…。
C言語プログラミング能力認定試験のサンプル問題です
文字コード指定は特に書いてませんでした...
https://www.sikaku.gr.jp/js/cp/ind/about/sample/ の 2 級問題ですね。(出典は明記しましょう。)
文字コードは書いてありませんが、バックスラッシュが円記号になってるし、たぶん Shift-JIS でしょうね…。
いずれにせよ、漢字は小学校だけで 1,000 文字以上習うように、1 文字 1 バイトには収まりません。
その問題では 1 文字 2 バイトと仮定すると辻褄が合います。
(昔はそれで良かったのですが、今時はふつー UTF-8 なので、大抵の漢字は 3 バイトになりますけどね。)
あなたの回答
tips
プレビュー