Programmieren von Datentypen

7

Ich versuche C zu lernen und habe das folgende kleine Programm entwickelt.

%Vor%

Das Programm kompiliert perfekt, aber die Antwort, die vom Programm zurückgegeben wird, macht keinen Sinn. Wenn ich 1.8 für die Höhe und 80 für das Gewicht eingib, ist bmi wie 1. # NF00, was keinen Sinn ergibt.

Was mache ich falsch?

    
Matthew 26.07.2012, 14:40
quelle

6 Antworten

10

scanf (und scanf_s ) format %f erwartet den Zeiger auf float .

Ändern Sie einfach den Typ Ihrer Variablen height und weight in float , um dies zu beheben.

    
Didier Trosset 26.07.2012, 14:43
quelle
11

Wenn Sie scanf mit double verwenden, müssen Sie den %lf -Spezifikator verwenden, da Zeiger nicht mit scanf hochgestuft werden.

Lesen Sie für weitere Informationen die folgende Frage: Warum scanf ( ) brauche "% lf" für doubles, wenn printf () in Ordnung ist mit nur "% f"?

    
Richard J. Ross III 26.07.2012 14:44
quelle
4

Ich denke, Problem in scanf_s Syntaxis, Sie haben 3-rd-Argument, das ist die Größe des Puffers in Bytes. Versuchen Sie Folgendes:

%Vor%     
spin_eight 26.07.2012 14:45
quelle
3

Der Nachteil von scanf () und printf () ist, dass es ein sehr striktes Format erfordert. Jede Nichtübereinstimmung zwischen der Kontrollzeichenfolge und dem Argument kann einen drastischen Fehler verursachen, der Ihre Eingabe oder Ausgabe sinnlos macht. Und dieser Fehler wird oft von Anfängern gemacht.

    
duleshi 27.07.2012 11:56
quelle
2

Wenn Sie den Formatbezeichner % f verwenden, müssen Sie den Datentyp float anstelle von double verwenden.

    
Fahad Naeem 13.01.2014 20:37
quelle
0

Das Problem ist, weil:

%Vor%

Dafür gibt es zwei Möglichkeiten:

  1. Entweder sollten die Variablen float :

    sein %Vor%
  2. oder das format specifier sollte mit double übereinstimmen.

    %Vor%
Ayushi Jha 01.06.2015 05:24
quelle

Tags und Links