ページ 11

初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 02:33
by レイ
printf("\n人体の構造と機能\n");
とソースで作った場合コマンドプロンプトでコンパイルして起動したら 人体の国「と機能n と文字化けするのですがなにか対策はありますか?どなたかよろしくおねがいします。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 03:00
by
前回同様意味不明です

ソース一度全部載せて

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 08:34
by たかぎ
ひどい言い方に見えるかもしれませんが...

C言語より先に、日本語を勉強した方がよいと思います。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 09:41
by レイ
#include <stdio.h>

int main(void)
{
char str[80];
int i;

printf("臨床工学技士の科目\n");
gets(str);
for (i = 0; str; i++)
printf("%c", str);

printf("専門基礎科目\n専門科目\n");
gets(str);
for (i = 0; str; i++)
printf("%c", str);

printf("専門基礎科目からいきます\n");
gets(str);
for (i = 0; str; i++)
printf("%c", str);

printf("医学概論\n公衆衛生学\n人体の構造と機能\n病理学概論\n臨床生化学\n臨床免疫学\n臨床薬理学\n情報処理工学\n医用電気工学\n医用電子工学\n医用機械工学\n生体物性工学\n生体材料工学\n");
gets(str);
for (i = 0; str; i++)
printf("%c", str);
return 0;
}

このソースで人体の構造と機能 という語句が人体の国「と機能n と出力されてしまいます。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 09:54
by
・・・getsが何してるか僕にはわからない。こんな風に使用していいの?
・・・forは止まるの?

この使い方が正しいなら、多分strの大きさが足りないのかな?
そもそも、何がさせたいんだろ??????

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 10:30
by Mist
質問する前に規約をしっかり読みましょう。

解決のヒント
SHIFT-JIS環境では「構(0x8d,0x5c)」や「能(0x94,0x5c)」のように文字コードに\(0x5c)が含まれる文字列は正しく表示されない場合があります。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 10:32
by たかぎ
プログラムは意味不明ですが、質問の現象は再現しました。
処理系不明なので推測の域を出ませんが、多分当たっているでしょう。

> 人体の構造と機能

のうち、「構」と「能」は、シフトJISでは2バイト目が0x5cになる、いわゆる「ダメ文字」です。
そのため、シフトJISに対応しているコンパイラでは

> 人体の国「と機能n

のように文字化けします。

もし、GCCを使っており、そのバージョンが3.4以上であれば、-finput-charset=cp932 -fexec-charset=cp932というオプションを付ければ問題は解消するはずです。
ただし、この対応を行っても、プログラムの意味不明なところはいかんともしがたいと思います。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月21日(木) 23:53
by taku.net
とりあえずレイさんが作っているプログラムの意図が知りたいですね^^;
サンプルを改造して「こんなことも出来る」っていうのを確かめてるんですか?

#レイさん、シフトJISの意味はわかります…よね?

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月22日(金) 02:02
by レイ
シフトJISわかりません。

Re:初歩的な質問と思いますが(×o×)↓

Posted: 2008年2月22日(金) 04:56
by tk-xleader
シフトJISとは日本語をコンピューターで表現する時の文字コードです。