scanf funktioniert nicht wie gewollt
-
Hallo,
ich habe unter Ubuntu 9.10 den gcc 4.4 installiert und versuche nun ein simples Programm auszuführen, was aber schon einmal gar nicht klappt. Weiß hier jamand rat?
#include <stio.h> int main() { int anzahl, i; float f; char s[50]; anzahl = scanf("i=%d %f %s", &i, &f, s); printf("Anzahl: %d | i=%d, f=%f, s=%s\n", anzahl, i, f, s); return 0; }
Ansich ein total simples Progrämmchen, was aber trotzdem nicht tut.
Compilieren: gcc -Wall test.c
Ausführung: ./a.outZunächst einmal hätte ich erwartet, dass mit "i=" ausgegeben wird und ich dann hinter das "=" meine Eingabe machen kann. Der Ausgabe-Text "i=" erscheint schon mal nicht. Das soll mir aber mal egal sein.
Wenn ich nun "3 1.2 test" eingebe und mit Enter bestätige, kommt bei der printf-Ausgabe bei Anzahl "0" (sehr seltsam), dann "i=6352884" und "f=-1.965665", s="??x? ?"
Was ist hier denn falsch? Ich mach doch alles richtig.
-
scanf() sollte man nur zum einlesen verwenden. also probier mal
anzahl = scanf("%d %f %s", &i, &f, s); statt anzahl = scanf("i=%d %f %s", &i, &f, s);
lg lolo
-
Grundsätzlich:
scanf liest nur und schreibt nicht -> wenn du mehr Komfort haben möchtest, musst du halt vor der scanf-Zeile eine printf einfügen.Lies in deinem Buch, Script oder/und Tutorial noch mal alles durch und versuche das zu verstehen was du zu printf findest.
Hau rein
-
btw. die zu diesem scanf("i=%d %f %s",...) pattern passende eingabe müßte normal so aussehen das es klappt
i=123 123.123 123
-
Hallo zusammen,
das Beispiel kam aus dem Skript. Der "Fehler" lag wirklich darin, dass man bei scanf wohl keine Ausgabe machen kann.
Sobald ich "scanf("i=%d ...)" mit "scanf("%d ...) ersetze (wie von Euch vorgeschlagen), dann funktioniert es auch!
Super, vielen Dank!
-
noobLolo schrieb:
btw. die zu diesem scanf("i=%d %f %s",...) pattern passende eingabe müßte normal so aussehen das es klappt
i=123 123.123 123
Ahh, da haben wirs! Das "i=" hab ich nicht mit eingegeben. Jetzt klappt's auch so!
Super, danke!