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:(