私は本に書かれている問題に悩まされています。問題がある -プログラムが予期せぬ出力を与えているのはなぜですか?
プロトタイプインターネット初心者がmessages.Hereの典型的なB1FFコミュニケ:
H3Y DUD3、C 15 R1LLY C00L
書き込みをwriringのユニークな方法を持っている仲間の名前B1FF、ありますユーザーが入力したメッセージを読み取り、B1FF-話すに変換します「B1FFフィルタ」:男ねえ、Cはrilly B1FF-話すで
を冷却されています:H3Y DUD3、C 15 R1LLY C00L
メッセージを入力します。 あなたのプログラムは、 (A = 4、B = 8、E = 3、I = 1、O = 0、S = 5)の大文字と小文字を代用する。プログラムはアルファベットに変換されていない理由を私は理解していないプログ
OF
私のプログラム -
#include<stdio.h>
int main()
{
char arr[50]={0},ch[50]={0};
int i=0;
printf("\nenter the sentence : ");
while(arr[i-1]!='\n')
{
scanf("%c",&arr[i]);
i++;
}
i=0;
while(arr[i]!='\n')
{
if(arr[i]=='e')
ch[i]='3';
if(arr[i]==('A'||'a'))
ch[i]='4';
if(arr[i]==('B'||'b'))
ch[i]='8';
if(arr[i]==('I'||'i'))
ch[i]='1';
if(arr[i]==('o'||'O'))
ch[i]='0';
if(arr[i]==('S'||'s'))
ch[i]='5';
else ch[i]=arr[i]-32;
i++;
}
ch[i]='\n';
i=0;
printf("\nIn B1FF-SPEAK : ");
while(ch[i]!='\n')
{
printf("%c",ch[i]);
i++;
}
printf("\n");
return 0;
}
OUTPUTとなぜscanf()
ではない文字としてspace
を受け入れますか?
は、デバッガでそれウォークスルー。 iの値に注意を払う - 特にそれを引いた行の中で、それを配列インデックスとして使用する行で! –
なぜ、 'scanf'を使って1文字を読むのですか?あなたは知っている、それは文字列全体を読むことができる、右か?また、 'man scanf'を読んで、スペースで何をしているのか理解してください。 –
if文の論理的な誤りを見ることができるように、コードを適切にインデントします。 –