Eingabe wird ignoriert



  • Berndi schrieb:

    setzt einfach das erste Element der fgets-Zielvariable auf 0, damit man sich später nicht rausreden kann, ein newline wäre schon vorher dringestanden (man hat ja keine Eingabe machen können) 🙂

    Schwachfug.



  • DaRe schrieb:

    😉 scanf verursacht ein Problem... oder geht heir was an mir vorbei?

    Scanf verursacht nie ein Problem, das Problem sitzt immer vor dem Bildschirm.



  • Stichwort vorbei. Wann ist dieser Tag endlich vorbei? :xmas2:

    Aber zum Thema scanf...
    Wenn es um Ganzzahlen ("Ziffernfolgen") geht, ist man mit %d als Formatkennzeichen natürlich auf der sicheren Seite.
    Unter Linux kennt scanf() noch %i. Da wird dann je nach "Führung" (0x / 0) hex oder oct gelesen.

    int auswahl = 0;
       char x = '\n';
       int anzahl = 0;
       [...]
       printf ("\nTestweise - auswahl: %d\n", auswahl);
       printf("Datei existiert bereits, soll sie neu angelegt oder fortgesetzt werden? 1-neu 2-fortgesetzt\n");
       do
       {
          anzahl = scanf(" %d ", &auswahl);
          printf ("\nTestweise - anzahl: %d\n", anzahl); // returncode von scanf! Anzahl der erkannten %d bzw. Fehlercode
       }
       while (anzahl != 1); // scanf-Schleife des Todes. Erst bei Eingabe einer Ganzzahl kommst Du hier raus!
       while ((x = getchar()) != EOF && x != '\n'); // schmeißt unerwünschte   newline-Gäste vom stdin-Spielplatz
       printf ("\nTestweise - auswahl: %d\n", auswahl);
       fgets(test, sizeof(test), stdin);
       [...]
    


  • Wutz schrieb:

    Berndi schrieb:

    setzt einfach das erste Element der fgets-Zielvariable auf 0, damit man sich später nicht rausreden kann, ein newline wäre schon vorher dringestanden (man hat ja keine Eingabe machen können) 🙂

    Schwachfug.

    /signed 🙂



  • p3t3r schrieb:

    Unter Linux kennt scanf() noch %i.

    Schwachfug.



  • Wutz schrieb:

    p3t3r schrieb:

    Unter Linux kennt scanf() noch %i.

    Schwachfug.

    http://www.kernel.org/doc/man-pages/online/pages/man3/scanf.3.html
    Hier wird noch ein %i gemäß p3t3rs Beschreibung gelistet.



  • Du scheinst auch Probleme mit der deutschen Sprache zu haben.
    In einem Forum zu C Standards C89/C99 die Aussage zu tätigen
    "Unter Linux kennt scanf() noch %i"
    ist Schwachfug, da %i gemäß beider Standards ein Standard-Spezifizierer für scanf ist und somit "Unter Linux kennt scanf() noch %i" Pfuscher JW Niveau bedeutet (palavert über Standard, hat aber keine Ahnung).



  • %i, %d macht keinen unterschied bei mir. Rückgabewert ist immernoch -1..



  • fabi1991 schrieb:

    %i, %d macht keinen unterschied bei mir. Rückgabewert ist immernoch -1..

    und was gibst du ein?



  • -1 deutet auf einen Fehler bei stdin hin, denn da gibt scanf() EOF zurück.
    Hat evtl. was mit dem fork zu tun.



  • Ich habe das Programm jetzt aufs allergeringste abgespeckt.
    starte ich "2" mit execv("2", vektor) funktioniert alles einwandfrei.
    schreibe ich davor:
    pid=fork();
    if(pid==0)
    execv("2", vektor);

    gibts das Problem.

    ey ich raste gleich aus:(


Anmelden zum Antworten