• ベストアンサー

C言語について

C言語について質問です。 ASCIIコードでは'0'が48、'a'が97になっていますよね。 このような感じで全角の平仮名や漢字などの文字をを数値として表す方法を探しています。 できれば簡単な例文なども付けていただけると助かります。 それではよろしくお願いします。

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

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.4

私より前の回答者の方の回答を見れば分かると思いますが、 C言語では、漢字であろうと、半角英数であろうと、 数値で表現されています。 半角英数字などの1バイト文字は、0~255までの数値で 表現が可能でC言語のコード上に'A'とすると数値として扱われます。 しかし、複数バイト文字(マルチバイト文字)、 漢字などは2バイト(大雑把に言えば2文字)を 使って表される為C言語上での扱いは文字列として扱う事になります。 (そういう風にみなしてプログラムすると言う事であって C言語の規格で明確に決まっているわけではありません。 バラバラに扱ってもそれは文字が崩れるだけの話です。) 以下のサンプルはマルチバイト文字のコードを 表示する簡単なサンプルです。 /* * VC++6.0 WinXP Pro SP2 */ #include <stdio.h> int main( int argc, char** argv ) { /* 文字コードの表現範囲は符号なしのため unsigned */ unsigned char c1,c2; printf( "Alt+半角/全角で全角入力\n" ); scanf("%c%c",&c1,&c2); printf("%02X %02X\n", c1, c2); return 0; }

ondagawa
質問者

お礼

お返事ありがとうございます。 無事に解決しました。 丁寧な説明で分かりやすかったです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

Oh-Orangeさん、euc(euc-jp)は通常はそういう表現をしません。 2バイトで構成される文字の2バイト目も最上位ビットを立てます。 それから一文字が3バイトで構成されることもあります(JIS X 0212)。 半角カナは 0x8eを先行させて2バイトで構成されます。 文字コードの話 http://euc.jp/i18n/charcode.ja.html

ondagawa
質問者

お礼

返事が遅くなってすいません。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★文字変換の処理を行いたいのですか? ・JISコード漢字は 0x2121~0x7E7E です。  1バイト文字が 0x21~0x7E の範囲。  2バイト文字も 0x21~0x7E の範囲。 ・EUCコード漢字は 0xA121~0xAE7E です。半角カタカナも含めるとちょっと複雑になります。  1バイト文字が 0xA1~0xAE の範囲。  2バイト文字が 0x21~0x7E の範囲。 ・シフトJISコード漢字は 0x8140~0xFCFC です。  1バイト文字が 0x81~0x9F、0xE0~0xFC の範囲。  2バイト文字が 0x40~0xFC の範囲、ただし 0x7F は除外。 ・シフトJISコードの場合は次のようにしてコード化できます。  『あ』という文字は  1バイト目が 0x82  2バイト目は 0xA0  です。よって 0x82A0 が『あ』の文字コードになります。  下にそのサンプルを載せます。 サンプル: char moji[] = "あ"; int code; これが文字コードの計算(処理) ↓ code = (moji[0] << 8 | moji[1]); printf( "『%s』の文字コードは 0x%04X です。\n", moji, code );

ondagawa
質問者

お礼

返事が遅れてすいません。 無事に解決しました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.1

『文字コード』で検索してみました。 #なお、ASCIIコードもですが、特にC言語の範疇というわけではないと思います。

参考URL:
http://ash.jp/code/index.htm
ondagawa
質問者

お礼

早速のお返事ありがとうございます。 私は最近プログラミングを始めたばかりのせいか、ASCIIコードはCのものなんだなぁと思っていました。 もっと勉強します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語

    (1)C言語の質問掲示板みたいなのがあるサイトをしりませんか?もし、知っていたら教えてください。 (2)TurboC++(ターボC++)を使ってプログラミングをしているのですが、ひらがなを使うにはどうすればよいでしょうか?半角/全角のキーやカタカナひらがなのキーを押してみてもダメだったのですが・・・

  • 言語バー

    PCで入力する際、今までは 『半角/全角 漢字』 を押すとひらがな入力ができていたのにできなくなりました。できない場合、言語バーの変換のところを『ひらがな』を押して修正していました。 が、今度は言語バーが『A』になったままで、クリックしても反応しなくなりました。 再起動したら言語バーがクリックできるようになりましたが、『半角/全角 漢字』を押して変換できるようにするのにはどうしたらよいでしょうか? ほかの質問サイトを見てもわかりませんでした。 よろしくお願いいたします。

  • C言語で全角文字を扱いたいのですが、

    C言語で全角文字を扱いたいのですが、 全角文字列を入力して特定の箇所の文字(例えば3文字目)を抜き出して、表示するという感じのプログラムをしたいのですが、うまくいきません。 半角文字ならば、配列を使ってできるのですが・・・・・

  • 言語バーの使い方

    言語バーの入力モードの表示について、 ひらがな入力なら「あ」半角英数なら「A」でその切り替えは半/全 漢字と書いてあるキーを交互に押しています。 間違えてどこかのキーを押すと「A」の横に[ を寝かせたようなマークが出ます。このマークからは「あ」へは切り替えら得られません。 どんな文字を入力する役目をしますか。 それから、普通は全角英数は使わないのでしょうか。        

  • タスクバーの言語の表示がおかしくなった。

    質問です。 XP下での言語バーの表示がおかしくなりました。 半角/全角を切り替えても、言語バーが切り替わりません。 あ般のまま、時にはA般のままです。その日によって違うようです。 けど半角/全角の切り替えは出来ているようで文字の打ち込みには支障がないようです。(A般のままでひらがなが打てる) どなたかお詳しい方よろしくお願いいたします。

  • C言語について

    質問です!例えば"1234"の文字が送られてきたら その文字を、4→A[0]、3→A[1]、2→A[2]、1→A[3] のように後ろから、配列に格納していきたいのですが どうしたらいいのかわかりません。言語はCです。 宜しくお願いします。

  • C言語を独学で習得するには。

    C言語を習得したいのですが、どんな本で習得するのがオススメですか? あまり文字が多いとやる気がなくなってしまいますので図解と文がバランスのいいも。ソースの間違いがないもの。(以前使っていた本が間違いだらけでした)最もポピュラーな書き方をしているもの。(これも以前使ってた本は他とは違いクセがありました)を探しています。 文字を表示するのは出来ますが、ポインタ・文字列などはまだ理解が浅い感じです。 プログラミングなどを行う仕事に就きたいと思っていますのでC言語の本質を理解して応用のきいたプログラミングをしたいと思っています。 最終的にはC言語習得後にC++も学びたいと思っていますので、C++についてもオススメの本があったら教えてください。 特に、独学で完成度の高いソフトが作れるようになった方の意見をお願いします。 またタイトルとは別のことになってしまいますが、変数に日本語(漢字・ひらがな・カタカナ)を代入させるにはどうすればいいのでしょうか?

  • 言語難易度

    英語はAからZまで26文字あります。もちろん省略文字「~it's」は抜きます 日本語の平仮名・カタカナは46文字(総合: 92文字)あり、漢字を含めても60,000文字はあります。 中国語は3万文字 世界で一番難しい言語は文字数レベル的もしくはそれを組み合わせる単語量的に どの言語が難しいのでしょうか? 世界のあらゆる言語は単調でAからZや日本語で言う「あ」から「ん」までしかなく、 日本語のカタカナや漢字等の別途文字というのでしょう?そういった文字がありません 世界で一番覚えにくく、相当な脳容量が無いと覚えきれない言語は何でしょうか? やはり「平仮名」「カタカナ」「漢字」の3つ言語がある日本語なのでしょうか?

  • 数値をASCII文字にする方法についての質問です。

    数値をASCII文字にする方法についての質問です。 PICマイコンのプログラミングをするために、C言語を使用しています。LCDに数値を表示するには変数を数値ではなく文字で渡してやらないといけないようなのですが、その変換のしかたがわからず調べていると、あるサイトで二桁の数字(suuji)の1の位をASCII文字(hensu)にするために、 hensu = (suuji % 10) + '0'; のようにコードを記載していました。実際にこの通りプログラミングしてみるとLCDに表示されたのですが、なぜこのようにするとASCII文字に変換できるのかがわかりません。('0'を加えるとアスキー文字になるのでしょうか?)どなたか教えて頂ければと思います。

  • C言語について

    今、大学の授業でやさしいC第3版という本をつかってC言語の勉強していてわからない問題が出てきたので質問させてください。 問題9 Char型の変数ChとInt型の変数nを宣言し アルファベットの大文字1文字と 整数1つを入力させて 次の2つの事を実行する実行ファイルを作成せよ。 1.その文字を表示する。 2.文字コードを使ってその文字をn文字シフト させた文字を表示する。 Q: Zを1文字シフトさせた時Aが出力されるようにするには どうしたらよいか?アスキーコード表をにらんで考えよ。 問題10 キーボードから身長と体重を入力させて BMIを計算して表示する実行ファイルを 作成せよ。 BMI(Body Mass Index)とは 身長と体重から求める体格指数の1つで 身長 H (m)、体重 W (kg) の時 BMI=W/H2 で求められる。 これはまだ最初の方で第3章から第5章までのところをやっています。