アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

#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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/11 09:34

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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/11 09:35

文字をどのように見るかで変わってくるだけです。

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

この回答への補足

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

初心者ですいません><

補足日時:2004/12/10 20:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!