Anzeige:
Ergebnis 1 bis 4 von 4

Thema: C Newbie

  1. #1
    Tastengott
    Gast

    Question C Newbie

    Hallo!

    Ich bin noch ein völliger Newbie im Umgang mit C.
    Aber ich möchte es lernen.
    Hab jetzt folgendes Problem.

    ----snipp----

    #include <stdio.h>
    int main()
    {
    char a,b,c;
    int i=1;

    printf("%d. Buchstabe : ",i++);
    scanf("%c",&a);
    fflush(stdin);
    printf("%d. Buchstabe : ",i++);
    scanf("%c",&b);
    fflush(stdin);
    printf("%d. Buchstabe : ",i);
    scanf("%c",&c);
    fflush(stdin);
    printf("Ich sortiere.....\n\n");

    printf("%c %c %c\n",a,b,c);
    return 0;
    }

    ----snapp----

    Wenn ich das kompiliere und ausführe, bekomme ich immer nur zwei Werte zurück.
    Woran liegt das?
    Kann mir jemand helfen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.01.2001
    Beiträge
    157

    Post

    So geht's (wenn auch mehr schlecht als recht)
    Code:
    #include &lt;stdio.h&gt;
    int main() {
      char a,b,c,nl;
      int i=1;
    
      printf("%d. Buchstabe : ",i++);
      scanf("%c%c",&a,&nl);
      fflush(stdin);
      printf("%d. Buchstabe : ",i++);
      scanf("%c%c",&b,&nl);
      fflush(stdin);
      printf("%d. Buchstabe : ",i);
      scanf("%c%c",&c,&nl);
      fflush(stdin);
      printf("Ich sortiere.....\n\n");
    
      printf("%c %c %c\n",a,b,c);
      return 0;
    }
    Das Return (newline = '\n') mit dem Du deine Eingaben abschliessen must damit das Programm sie bekommt, wenn das Terminal im kanonischen Modus laueft ist auch ein Zeichen was beachtet werden will.

    Merke fuer die Zukunft: scanf() und alle seine Varianten sinds pfui. Am besten nicht benutzen.

    Besser mit fgets einen ganzen Zeile lesen (aber bitte keinen Bufferoverflow produzieren) und deren Inhalt dann selber analysieren (z.B. Leerzeichen am Anfang und Ende abschneiden, etc...)

    Oder gleichen gegen libreadline linken ;-)

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.03.2001
    Ort
    Thueringen / Erfurt
    Beiträge
    16

    Question

    Aehmmmm, das letzte bitte nochmal, das versteh ich jetzt nicht ganz


    Buchi
    Buchi

    aaaaahhh....ein PC-Nums....
    http://www.pc-nums.de/

  4. #4
    iGEL
    Gast

    Post

    Moin!

    > Ich bin noch ein völliger Newbie im Umgang mit C.
    > Aber ich möchte es lernen.
    > Hab jetzt folgendes Problem.
    > [...]
    > Wenn ich das kompiliere und ausführe,
    > bekomme ich immer nur zwei Werte zurück.
    >
    > Woran liegt das?
    > Kann mir jemand helfen?
    >

    Ich kenne fflush nicht, und es scheint auch nicht so zu arbeiten, wie du dir das vorstellst Ersetze es durch while (getchar() != '\n');, und es geht!

    Code:
    #include <stdio.h>
    
    int main()
    {
      char a,b,c;
      int i=1;
      
      printf("%d. Buchstabe : ",i++);
      scanf("%c",&a);
      while (getchar() != '\n');
      printf("%d. Buchstabe : ",i++);
      scanf("%c",&b);
      while (getchar() != '\n');
      printf("%d. Buchstabe : ",i);
      scanf("%c",&c);
      while (getchar() != '\n');
      printf("Ich sortiere.....\n\n");
      
      printf("%c %c %c\n",a,b,c);
      return 0;
    }
    Und ich würde mir _unbedingt_ angewöhnen, Schleifen, Bedingungen und andere Blöcke immer einzurücken. Es dient der Übersicht!

    cu Johannes

Lesezeichen

Berechtigungen

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