Eingaben mit Sonderzeichen beenden



  • Hallo,

    ich möchte einen Text mit Leerzeichen und Zeilenumbrüchen einlesen. Deswegen soll die Tastatureingabe mit einem Sonderzeichen statt Enter beendet werden. Google konnte mir bisher nicht weiterhelfen. Könntet ihr mir vielleicht einen Tipp geben, wie ich es anstellen könnte oder mit welchen Funtkionen ich mich dafür genauer beschäftigen muss?

    Danke schonmal!



  • Einfachste Möglichkeit dürfte getchar() in einer Schleife ausgeführt sein.



  • Ok, Danke!

    Dann lag ich mit meiner Annahme sogar schon richtig. Ich habs auch schon versucht, bin aber so neu in C, dass sogar sowas noch ne Herausforderung ist.

    #include <stdio.h>
    
    int main(void)
    {
    
    	char text; 
    
    	 printf("Geben Sie einen Text ein!\n");
    	 while ((text = getchar())!='#');
    
    	 printf("Eingegebener Text:\n");
    	 putchar(text);
    system("PAUSE");
    return 0;
    }
    

    Bitte steinigt mich nicht! Ich weiß, dass das keine Glanzleistung sein kann...



  • Eine Variable vom Typ char speichert ein Zeichen. (Wie der Name schon sagt.)
    Ein Text besteht aber aus mehreren Zeichen, deshalb willst du ein Array haben.



  • Dschuly schrieb:

    Ok, Danke!

    Dann lag ich mit meiner Annahme sogar schon richtig. Ich habs auch schon versucht, bin aber so neu in C, dass sogar sowas noch ne Herausforderung ist.

    #include <stdio.h>
    
    int main(void)
    {
    
    	char text; 
    
    	 printf("Geben Sie einen Text ein!\n");
    	 while ((text = getchar())!='#');
    	
    	 printf("Eingegebener Text:\n");
    	 putchar(text);
    system("PAUSE");
    return 0;
    }
    

    Bitte steinigt mich nicht! Ich weiß, dass das keine Glanzleistung sein kann...

    Versuch's mal damit:

    #include <stdio.h>
    
    int main(void)
    {
    	 printf("Geben Sie einen Text ein!\n");
    
    	 printf("Eingegebener Text:\n");
    	 putchar('#');
    system("PAUSE");
    return 0;
    }
    

    Macht exakt die gleiche Ausgabe wie Dein Programm, nervt aber nicht den Benutzer damit, irgendwelche Daten einzugeben, die eh gleich wieder verworfen werden.

    mfg Martin



  • Dschuly schrieb:

    Ok, Danke!

    Dann lag ich mit meiner Annahme sogar schon richtig. Ich habs auch schon versucht, bin aber so neu in C, dass sogar sowas noch ne Herausforderung ist.

    #include <stdio.h>
    
    int main(void)
    {
    
    	char text; 
    
    	 printf("Geben Sie einen Text ein!\n");
    	 while ((text = getchar())!='#');
    	
    	 printf("Eingegebener Text:\n");
    	 putchar(text);
    system("PAUSE");
    return 0;
    }
    

    Bitte steinigt mich nicht! Ich weiß, dass das keine Glanzleistung sein kann...

    text speichert ein zeichen und wird immer wieder mit überschrieben. Du kannst keine Zeichenkette in einer Variable speichern die ein zeichen halten kann. Nimm dein C buch und ließ dir das kapitel Zeichenketten und arrays durch.
    Dann musst du noch wissen was getchar genau macht
    es wartet bis du ein Zeichen auf der tasta eingibst und gibt dieses dann zurück. Wenn du jetzt einfach mal im Kopf dein programm schritt für schritt durch gehst sollte dir auffallen dass das so nicht funktionieren kann.



  • Dschuly schrieb:

    #include <stdio.h>
    
    int main(void)
    {
    
    	 while ((text = getchar())!='#'); /* <-- die Schleife hier hat keinen Schleifenkörper, den benötigt man aber normalerweise */
    	
    	 printf("Eingegebener Text:\n");
    	 putchar(text);
    system("PAUSE");
    return 0;
    }
    
    while ((text = getchar())!='#')
    {
      putchar(text); /* <-- wird bei jedem Schleifendurchlauf aufgerufen und nicht nur 1x NACH Schleifenende wie bei dir */
    }
    

Anmelden zum Antworten