C言語関係掲示板

過去ログ

No749 スペースを"△"に変換して出力

[戻る] [ホームページ]
No.9303

アスキーコード表計算
投稿者---TOKI(2003/09/15 04:17:39)


今回始めて投稿させていただきます。
△=32 !=33 ・ ・ ・ ・ ‘=39
(=40 ・ ・ ・ ・ ・ ・ ・ ・ =49
と、32〜126の文字コードを出力していくんですがうまくいきません
#include <stdio.h>
int main(void)
{
    int a;	 
    for( a=32; a<=126; a++)
        printf("%c=a", a);
    return 0;
}

これだと結果が32がスペースで、!=a"=a#=aとなって!=33 "=34 #=35と全然違うものができてしまうんです。39,49で改行していくのはifを使うと思うんですがうまくいきません。

環境はWindowsXPでVisual C++を使っています。
まだ初めてから一週間ぐらいの初心者ですがよろしくお願いします。


No.9304

Re:アスキーコード表計算
投稿者---YuO(2003/09/15 06:32:48)


    for( a=32; a<=126; a++)
        printf("%c=a", a);

>これだと結果が32がスペースで、!=a"=a#=aとなって!=33 "=34 #=35と全然違うものができてしまうんです。39,49で改行していくのはifを使うと思うんですがうまくいきません。

まず,"%c=a"では,=aがそのまま表示されます。
aの値を表示したいのだから,このprintfの部分は,
printf("%c=%i", a, a);
とする必要があります。
#%iの後に空白をいれた方が見やすいと思いますが。

改行は確かにif文です。
#三項演算子で強引にできないこともないですが……。
10で割った余りが9であれば改行する,というのをプログラムにしてみると良いでしょう。


No.9315

Re:アスキーコード表計算
投稿者---TOKI(2003/09/15 15:05:39)


YuOさんありがとうございました。

さっそく試してみましたらうまくいきました。
%iを使うとは勉強になりました。
if文も教わったとおりにやったらできました。
ありがとうございます。

アスキーコード32番はSPCなんですがそれをΔを文字コードで出力するというのがわからないのですがよかったら教えてください。
アスキーコードをみてもどこにもΔがなくてどう出力すればいいのか思いつきません。
printでそこだけ出力するというのも考えましたが文字コードで出力とあるのでこれも違うみたいなんです。

No.9320

Re:アスキーコード表計算
投稿者---たか(2003/09/15 15:54:47)


Δはロシア文字で2バイト文字、シフトJISコードは0x83A2です。
だからASCIIコード表の中にはありません。

No.9321

Re:アスキーコード表計算
投稿者---TOKI(2003/09/15 18:37:30)


>Δはロシア文字で2バイト文字、シフトJISコードは0x83A2です。
>だからASCIIコード表の中にはありません。

すいません。いろいろと考えたのですがいまいち表示の仕方がわからないのです。
0x83A2というのは0x83の部分は16進数で83とわかるのですが後半のA2がよくわかりません。
そのまま0x83A2で表示させてみたら"「"が出力されたのでさらにわからなくなってしまいました。
お手数かと思いますがご教授おねがいします。


No.9322

Re:アスキーコード表計算
投稿者---YuO(2003/09/15 18:53:38)


>0x83A2というのは0x83の部分は16進数で83とわかるのですが後半のA2がよくわかりません。
>そのまま0x83A2で表示させてみたら"「"が出力されたのでさらにわからなくなってしまいました。

%cはcharを表示しますから,
0x83A2 & 0xFF で0xA2に相当する文字を表示しています。

printf("%c%c", 0x83, 0xA2);
とやるか,
printf("Δ");
のようにします。
#後者を推奨。


No.9323

Re:アスキーコード表計算
投稿者---たか(2003/09/15 18:56:11)


すみませんロシア文字ではなくてギリシャ文字でした。
でも次のようにすれば自然に表示できます。

#include <stdio.h>

int main(void)
{
  printf("%c%c\n", 0x83, 0xa2);
  
  return 0;
}


No.9326

Re:アスキーコード表計算
投稿者---TOKI(2003/09/16 00:51:12)


YuOさん、たかさんありがとうございます。
やってみたところうまくできました。
文字コード1つ取ってみても奥が深くてまだまだ勉強が足りないなと思い知らされました。
皆さんありがとうございました。

No.9324

Re:アスキーコード表計算
投稿者---ゆかり(2003/09/15 22:29:05)


>アスキーコード32番はSPCなんですがそれをΔを文字コードで出力するという

学校の課題ですか?
板書や手書き文書でスペースを表すのに、よく△を使いますが、
そういう説明はありませんでしたか?


No.9327

Re:アスキーコード表計算
投稿者---TOKI(2003/09/16 00:56:18)


Δがスペースだとは思いもしませんでした。
アスキーコード表をいくつか見ましたが"空白"や"SPC"となっていたので気が付きませんでした。
また勉強になりました。
ゆかりさんありがとうございました。