• ベストアンサー

ASCIIコードへの変換方法

ポインタに文字列を格納し char *a="a"; char *b="ace"; このポインタの中身をASCIIコードで表示させるプログラム ポインタaの中身aはASCIIコード8進数で001です。 ポインタbの中身aceはASCIIコード8進数で001003005です。 という感じのプログラムを作りたいのですが ASCIIへの変換方法がわからなく困っています。 もしよろしかったら具体例等のプログラムのご教授願います。

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

  • ベストアンサー
  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.2

#1です。 char *b="ace"; char *c; printf("%s=", b); for( c=b; *c!='\0'; c++ ) printf("%o", *c); printf("\n"); 以上で「ace=141143145」と表示されると思います。 これを関数にまとめておけば、使い回しが出来ます。 たとえば... void octdisp(const char *a) { char *b; printf("%s=", a); for( b=a; *b!='\0'; b++ ) printf("%o", *b); printf("\n"); } int main(void) { char *a="a"; char *b="ace"; octdisp(a); octdisp(b); return 0; }

cookie34
質問者

お礼

ありがとうございました。 大変参考になりました。

その他の回答 (2)

回答No.3

ANo.2のように1文字ずつコードを表示すればOKです。 ただし、"%o" は "%03o" にしないと数字が小さいとき3桁になりません。 参考まで。 #include <stdio.h> void octdisp(char *a, char *name) { char *p=a; printf("ポインタ%sの中身%sはASCIIコード8進数で", name,a); while(*p!='\0') printf("%03o", *p++); printf("です。\n"); } int main(void) { char *a="a"; char *b="abc"; octdisp(a, "a"); octdisp(b, "b"); return 0; }

cookie34
質問者

お礼

ありがとうございました。 大変参考になりました。

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

文字をどのように見るかで変わってくるだけです。(と言いますが、パソコンの奥深くでは文字だろうと何だろうと常に数字です。) ちなみに、"a"のASCIIコードは0x61ですが... printf("%c=%o", *a, *a); これだと、 a=141 と表示されるはずです。

cookie34
質問者

補足

即レスありがとうございます。 %oや%dのみだとポインタの最初の文字だけ表示されて char *b="ace";の様な文字列だと"%o",*dだけでは141143145と全ての文字が表示されないのですが何か解決策は無いでしょうか? 初心者ですいません><

関連するQ&A