◯入力した文字列(半角)の各文字のASCIIコードを出力するプログラムを完成させなさい。
□出力例
文字を入力してください(半角)。>>ab
a のASCIIコードは 97 です。
b のASCIIコードは 98 です。
学校の、プログラミング言語応用、という科目で配られたプリントの問題なのですが、
進行が遅いので予習しています。
課題ではありません。
プリントの単元がgetcharの性質を理解するための単元のようなので、以下の通りの条件を設けて解いています。
・getchar を用いて入力をする
・文字数の制限なし(配列の宣言は不可)
いろいろ調べていると、こちらのサイトを見つけました。
ポインタを用る表示方法でした。
それを参考にしつつ組み始め、ポインタを用いて、入力した二文字にだけ対応して表示するプログラムでポインタの機能をテストしています。
#include<stdio.h>
#include<ctype.h>
main(void)
{
int *c;
printf("文字を入力してください(半角)。>>");
c = getchar();
printf("%c の ASCII コードは %d です。\n",(c),(c));
printf("%c の ASCII コードは %d です。\n",(c+1),(c+1));
}
a の ASCII コードは 97 です。
e の ASCII コードは 101 です。
と表示されました。
何故 e に成ってしまうのでしょうか、分からず困っています。
これが解決したら、c が NULL でない限り、◯ の ASCII コードは ◯◯ です。
と繰り返し表示するように改良する予定です。
それなので、先程、
int *c=NULL
として、
if((c+5)==NULL) printf("NULLです\n");
としてみたのですが、 NULL と出ませんでした。
ポインタ c に保存された、 getchar からのアドレス? が空であるか、ソウでないか、というのを調べるにはどのような方法を使えば可能なのでしょうか。
ご教示いただけると幸いです。
□追記□
また、追記なのですが、学校ではポインタについてまだ一切学んでおりません。
突然ポインタを使用しなくてはならない問題が出るとは考えにくいのですが、ポインタを用いずして解く方法がありますでしょうか。