Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Problem beim String-Einlesen mit C

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Ort
    Weiden
    Beiträge
    10

    Problem beim String-Einlesen mit C

    Hallo!

    Ich habe ein Problem mit folgendem Programm:

    Code:
    #include <stdio.h>
    #include <string.h>
    
    char eingabeText[50];
    
    void zykl(char eingabe);
    
    main()
       {
        char menueZykl = '1', menueVersch = '2', menueKombi = '3', menueAbbr = '4', menueEing;
    
        do
          {      
           system("CLS");
           printf("\t\t**************************************************\n"
                  "\t\t*                                                *\n"
                  "\t\t*   Waehlen Sie ein Codierungsverfahren aus:     *\n"
                  "\t\t*                                                *\n"
                  "\t\t*        %c - Zyklische Verschiebung              *\n"
                  "\t\t*        %c - Verschiebung                        *\n"
                  "\t\t*        %c - Kombi                               *\n"
                  "\t\t*        %c - Abbruch                             *\n"
                  "\t\t*                                                *\n"
                  "\t\t**************************************************\n\n", menueZykl, menueVersch, menueKombi, menueAbbr);
        
           scanf("%c", &menueEing);
    
           printf("\nBitte geben Sie nun einen Text ein. Hinweis: Es duerfen nur \"einfache\"\n"
                  "Buchstaben \x28keine Umlaute, etc.\x29, Ziffern, das Leerzeichen und Zeilenumbrueche\n"
                  "verwendet werden.\n"
                  "Schliessen Sie hierauf Ihre Eingabe mit dem \'#\'-Zeichen ab.\n\n"
                  " > ");
           scanf("%50[^#]", eingabeText);
          
           if(menueEing == menueZykl)
             zykl(*eingabeText); 
          }
        while(menueEing != menueAbbr);
       }
    
    void zykl(char eingabe)
       {
        char ausgabeText[50];
        int i, position, laenge;
    
        laenge = strlen(eingabeText);
        printf("\nIhre Eingabe lautete: %s\n\n", eingabeText);
        printf("Geben Sie nun an, um wieviele Stellen jeder Buchstabe\n"
               "im Alphabet verschoben werden soll: ");
        scanf("%d", &position);
    
        for(i = 0; i <= laenge; i++)
          {
           if(eingabeText[i] >= 65 && eingabeText[i] <= 90 || eingabeText[i] >= 97 && eingabeText[i] <= 122)
             {
              while(eingabeText[i] >= 65 && eingabeText[i] <= 90)
                eingabeText[i] = eingabeText[i] + 32;
              ausgabeText[i] = eingabeText[i] + position;
             }
           else if(eingabeText[i] = 32)
             ausgabeText[i] = eingabeText[i];
          }
    
        printf("\nVerschluesselt: ");
    
        for(i = 0; i < laenge; i++)
          printf("%c", ausgabeText[i]);
        
        printf(".\n\n");
        system("PAUSE");
       }
    Nach der Eingabe von "eingabeText" überspringt er mir einfach die folgenden scanf-Anweisungen. Kann mir hier jemand weiterhelfen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.11.2002
    Ort
    Hennef
    Beiträge
    106
    Hallo,

    veileicht hilft das:

    char dummy;

    scanf("%50[^#]", eingabeText);
    while(dummy!='\n') scanf("%c" ,&dummy);

  3. #3
    Registrierter Benutzer Avatar von Trillian
    Registriert seit
    26.04.2001
    Beiträge
    180
    scanf("%50s[^#]", eingabeText);

  4. #4
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Ort
    Weiden
    Beiträge
    10
    Trillian: Laut Syntax muss das schon ohne das 's' sein. Andernfalls bewirkt das [^#] auch nichts...

  5. #5
    Registrierter Benutzer
    Registriert seit
    03.04.2002
    Ort
    Weiden
    Beiträge
    10
    Ich habs: vor der nächsten scanf-Anweisung muss ein fflush(stdin); stehen, dann klappts. War nur eine Vermutung, deshalb hab ichs mal probiert. Weiss vielleicht jemand, warum genau?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •