2016-06-23 8 views
-1

Versuchen, herauszufinden, wie das Fragezeichen als so drucken:
Benutzereingaben: "Apple" und dann wird die Zeichenfolge in einem Array gespeichert und wird wie folgt gedruckt: "Apfel?"
hier mein Code:
Drucken eines Fragezeichens nach einer Schleife

#include<stdio.h> 
int main() 
{ 
    char a[23]; 
    int i=0; 
    printf("enter a single english word: "); 
    while((a[i++]=getchar()) != '\n' && i < 23){ 
     a[i] = '\0'; 
     i = 0; 
    } 
    while(a[i] != '\0'){ 
     printf("%c",a[i++]); 
    } 
    printf("?"); 
    return 0; 
} 
+2

Sie werden nach jedem Lesevorgang zurückgesetzt. Warum? – engineer14

+1

Ich vermute, er wollte das tun, nachdem die Schleife fertig war. – Barmar

Antwort

1

Zunächst einmal ist Ihre Eingangsschleife falsch. Es sollte wie so sein:

while((a[i++]=getchar()) != '\n' && i < 23) {} 
a[i] = '\0'; 

Da die Kommentare zu Ihrer Frage sagen, oben, können Sie den Zeigerindex sind Zurücksetzen nach jedem Zeichen gelesen wird, also Charakter 0 des Arrays zu lesen, jedes Mal. Sie sollten dies nach der Schleife tun. Auch

, weil a nur eine Zeichenfolge ist, sollten Sie in der Lage sein, nur es so drucken (ohne Schleife):

printf("%s?", a); 

Final Program:

#include<stdio.h> 
int main() 
{ 
    char a[23]; 
    int i=0; 
    printf("enter a single english word: "); 
    while((a[i++]=getchar()) != '\n' && i < 23) {} 
    a[i] = '\0'; 
    printf("%s?",a); 
    return 0; 
} 
2

Sie setzen i nach jedem gelesenen Zeichen zurück. Dadurch löschen Sie effektiv alles, was gespeichert wurde. Sie müssen i = 0; von innerhalb der ersten while-Schleife nach direkt verschieben.

2

Der Code, den Sie innerhalb der ersten while Schleife haben, sollte nach der Schleife durchgeführt werden. Sie machen die ganze Arbeit der Schleife im Header while(). Der Schleifenkörper wurde jedes Mal auf i zurück auf 0 zurückgesetzt, sodass Sie wiederholt das erste Zeichen von a überschreiben.

while((a[i++]=getchar()) != '\n' && i < 23){ 
} 
a[i] = '\0'; 
i = 0; 
1

Die follwoing Logik funktioniert:

char a[23]; 
int i=0,j=0; 
printf("enter a single english word: "); 

die Eingabe in ein Array zu scannen:

for(a[i]=getchar(); (a[i]!='\n') && (i<23) ; i++) 
     ; 

Und schließlich Druck:

for(j=0;j<i;j++) 
     putchar(a[j]); 

daher das Programm:

#include<stdio.h> 

int main() 
{ 
    char a[23]; 
    int i=0,j=0; 
    printf("enter a single english word: "); 

    for(a[i]=getchar(); (a[i]!='\n') && (i<23) ; i++) 
     ; 

    for(j=0;j<i;j++) 
     putchar(a[j]); 

    printf("?"); 
    return 0; 
} 
Verwandte Themen