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.out

    Zunä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!


Anmelden zum Antworten