Ich stecke in einem Problem in einem Buch fest. Das Problem ist -Warum gibt das Programm eine unerwartete Ausgabe?
Der prototypische Internet newbie Stipendiatin Name B1FF ist, der von wriring messages.Here ist ein typisches B1FF Communique .:
H3Y DUD3, C 15 R1LLY C00L
schreibt eine einzigartige Art und Weise hat ein „B1FF Filter“, die eine Nachricht durch den Benutzer und übersetzt sie in B1FF-sprechen eingegeben lautet:
eingeben Nachricht: Hey Kumpel, C ist rilly kühl
In B1FF-sprechen: H3Y DUD3, C 15 R1LLY C00L
Ihr Programm sollte die Messa konvertieren Bei Großbuchstaben ersetzen Sie Ziffern für bestimmte Buchstaben (A = 4, B = 8, E = 3, I = 1, O = 0, S = 5).
Mein Program-
#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;
}
Ich verstehe nicht, warum das Programm nicht die Alphabete konvertiert und warum scanf()
ist nicht Akzeptieren space
als ein Zeichen?
Weg durch sie mit einem Debugger. Achten Sie auf den Wert von i - besonders in der Zeile, in der Sie eins davon abziehen und dann als Array-Index verwenden! –
Warum benutzen Sie 'scanf', um einzelne Zeichen zu lesen? Weißt du, es kann die ganze Zeichenfolge lesen, oder? Lies auch 'man scanf', um zu verstehen, was es mit Leerzeichen macht. –
Korrigieren Sie den Code richtig, damit Sie die logischen Fehler in Ihren if-Anweisungen sehen können. –