zeiger mit widerholschleife



  • ich muss dazusagen das die 1te variante funktioniert ,die 2te jedoch nicht und das verwirrt mich

    danke



  • Och manno wie lange proggst du so schon?

    Deine erste Variante geht auch nicht!

    Also so ist es richtig:

    #include <stdio.h>
    
    int main()
    { 
      char eingabe='j',puffer[1]; // arreys brauchen einen NULL terminator!
      while(eingabe=='j')
        {
        system("cls");  // so gehts
        printf("eingabe:");
        scanf("%s",&puffer[0]);
        strcpy(eingabe,puffer[0]); // so kopiert man strings
        }
      return 0; 
    }
    
    // zweite Variante
    
    #include <stdio.h>
    int main()
    { 
      char eingabe='j';
      while(eingabe=='j')
        {
        system("cls"); // so ist es richtig
        printf("eingabe:");
        scanf("%c",&eingabe);
        }
      return 0; 
    }
    

    system clear gibts net.
    besser währe clrscr aus der conio.h (welchen compiler benutzt du?)
    Außerdem ist das puffer arrey unsinn wo du doch ein normales char nemen kannst!

    P.S.: Die erste Variante konnte ich nicht testen.

    [ Dieser Beitrag wurde am 07.04.2003 um 12:51 Uhr von quizzmaster editiert. ]



  • hallo,
    da ich ein unix system nutze ist system("clear") schon richtig,da ich den Befehl clear in der Konsole ausführe.Die 1 Variante hatte ich getestet und sie geht auch.Die 2te jedoch geht nicht.
    Ich wolte eigentlich nur wissen wieso ich einen puffer definieren muss obwohl ich das Zeichen doch auch direkt über scanf einlesen kann.In der 2ten Variante läuft die schleife nicht weiter obwohl ich j eingabe in der ersten mit einem Puffer jedoch schon.

    Kann mir das mal einer klar machen.Ich glaub das hat irgendwas mit dem Enter-Zeichen zu tun.

    PS:bitte keine weiteren Hinweise wie schlecht mein programm ist ich will nur wissen wieso die 2 te variante nicht funkt.

    Danke



  • Also, bei mir funzt folgendes Programm tadellos:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
       char eingabe = 'j';
    
       while(eingabe == 'j')
       {
          system("cls");
          printf("Eingabe: ");
          scanf("%c", &eingabe);
       }
    
       return 0;
    }
    


  • @Quizmaster:
    strcmp(eingabe,puffer[0]); // so kopiert man strings

    So bestimmt nicht - so vergleichst du sie! Wetten, daß was du machst gibt ne Access Vio, weil eingabe nur ein char ist, das NICHT null terminiert ist?

    Wenn du kopierst, dann mit strcpy

    Das kopieren eines Zeichens währe dann wenn schon strcmp( ); Das funktioniert aber nicht, da es sich nur um 1 Zeichen handelt.

    eingabe = pbuffer[0] past scho 😉



  • okok hatte mich verschrieben 😃 , aber bei mir funzt eingabe = puffer[0] net.



  • Dann sei dir verziehen 😃



  • also wenn ich das programm compiliere und als eingabe j eingebe beendet er das programm obwohl
    die schleife weiter laufen solte.

    Wieso geht das bei mir nicht?ich nutze gcc.

    danke



  • Lad dir nen anderen Compiler mit IDE herunter.
    z.B. den Borland C++( http://www.borland.de ) oder Dev-C++( http://www.bloodshed.com )



  • sowohl borland als auch bloodshed sind compiler für windows was ich jedoch nicht habe.
    Ich glaube Bloodshed Dev setzt auch auf gcc auf



  • #include <stdio.h>
    #include <stdlib.h>
    Du hast vielleicht Probleme!

    int main()
    {
       char eingabe = 'j';
    
       while(eingabe == 'j')
       {
          system("cls");
          printf("Eingabe: ");
          fflush(stdin);         //Nie vergessen den Tastaturpuffer zu löschen!!!
          scanf("%c", &eingabe);
       }
    
       return 0;
    }
    

    ----
    FREAK



  • Original erstellt von <FREAK>:
    **system("cls");
    fflush(stdin); //Nie vergessen den Tastaturpuffer zu löschen!!!
    **

    Ui, gleich 2x systemabhängiges Verhalten... Es gibt auch noch was anderes als Microsoft.



  • Original erstellt von <FREAK>:
    fflush(stdin); //Nie vergessen den Tastaturpuffer zu löschen!!!

    fflush(stdin); legt ein undefiniertes Verhalten an den Tag.
    D.h., die Funktion kann den Eingabepuffer löschen oder auch die Festplatte.
    Trotzdem wird die Funktion leider viel zu häufig in Büchern benutzt.



  • Statt immer mit eurem "Undefinierten Verhalten" zu kommen, könntet ihr doch lieber mal sagen wie ihr eurer Meinung nach am besten fflush(); umgehen würdet?



  • while(getchar() != '\n');


Anmelden zum Antworten