mikrocontroller.net

Forum: PC-Programmierung printf 0.0000


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Eduard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
ich bin ein blutiger Anfänger in c und brauche bitte eure Unterstützung.

Kann jemand mir bitte sagen warum ich bei diesem Code:

#include<stdio.h>

int main()
{
    float output_voltage;
  printf("give a voltage value:");
  scanf("f", &output_voltage);
  printf("the result is %f\n", output_voltage);
}



wenn ich z.B output_voltage einen Wert = 4 gebe, 0.000000 als Ergebnis 
bekomme?

Danke

: Verschoben durch Moderator
von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Du gibst output_voltage nicht den Wert 4.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Weil du das Ergebnis von scanf() gar nicht ausgewertet hast und folglich 
auch nicht weißt, ob es überhaupt erfolgreich war.

von mech (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Das % beim f in scanf fehlt

von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Weil du das Ergebnis von scanf() gar nicht ausgewertet hast und folglich
> auch nicht weißt, ob es überhaupt erfolgreich war.

Eben, bei fehlendem Prozentzeichen im Scanf-Format kann da auch nichts 
eingelesen werden:
scanf("f", &output_voltage);

Besser:
    if (scanf("%f", &output_voltage) == 1)
    {
        printf("the result is %f\n", output_voltage);
    }
    else
    {
        fprintf(stderr, "wrong input\n");
    }

von Eduard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Super vielen Dank :)

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht lesenswert
Schalte den Warnlevel vom Compiler auf Maximum und beachte auch die 
Warnungen.
Bei dem scanf sollte die Warnung etwa „Anzahl Parameter passt nicht zu 
Formarspecifier“ lauten.

Beitrag #6134663 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.