leerzeichen bei einem string



  • hallo habe folgendes programm geschrieben, dass mir schrittweise die buchstaben einer eingegebenen zeichenkette in großbuchstaben umwandelt. doch habe ein problem
    gebe ich z.b. hallo welt ein wird nur das HALLO groß auf dem bildschirm ausgegeben. was muss ich machen damit das welt auch groß geschrieben ausgegeben wird. das problem liegt beim leerzeichen oder? wie kann man sowas dann umgehen?
    vielen dank

    hier mein quelltext:

    #include <stdio.h>
    #include <string.h>
    
    void main()
    
    {
    	char sz_txt[30];
    	short i_index, i_laenge;
    
    	printf("Geben Sie eine Zeichenkette ein: ");
    	scanf("%s", &sz_txt);
    	fflush(stdin);
    
    	for(i_index = 0, i_laenge = strlen(sz_txt);i_index < i_laenge;i_index++)
    
    	sz_txt[i_index] = toupper(sz_txt[i_index]);
    
    	printf("%s\n\n", sz_txt);
    
    }
    


  • #include <stdio.h>
    #include <string.h>
    
    void main()
    
    {
        char sz_txt[30];
        short i_index, i_laenge;
    
        printf("Geben Sie eine Zeichenkette ein: ");
        fgets(sz_txt, 30, stdin); // scanf("%s", &sz_txt);
        setvbuf(stdin,NULL,_IONBF,0); 
        setvbuf(stdin,NULL,_IOFBF,BUFSIZ); // fflush(stdin);
    
        for(i_index = 0, i_laenge = strlen(sz_txt);i_index < i_laenge;i_index++)
    
        sz_txt[i_index] = toupper(sz_txt[i_index]);
    
        printf("%s\n\n", sz_txt);
    
    }
    

    mmmh also mit fgets geht es, da liest er auch über das leerzeichen und verwende kein "fflush(stdin);" gug hier

    greetzz



  • Nach fgets() brauchst stdin (normalerweise) nicht leeren. fgets() liesst auch das '\n' in den String. Ausnahme: Der eingegebene String (inkl. '\n''\0') ist länger als der Zielbuffer. Diesen Fall sollte man natürlich schon wieder abfangen.

    Außerdem bin ich mir nicht ganz sicher, ob die Variante mit setvbuf() portabel ist. die Variante mit getchar() würde ich bevorzugen.



  • Nach fgets() brauchst stdin (normalerweise) nicht leeren.

    ich wes ... aba ich habe mir gedacht, ich poste ihm an dieser stelle ne alternative und setzt sie da hin wo er sie "hin haben will" 🙂

    greetzz


Anmelden zum Antworten