2017-02-11 2 views
1

Ich habe ein kleines Problem mit einem Programm, an dem ich arbeite, bekomme ich immer die Warnung format '%1f' expects type 'float *' but argument 2 has type 'double *' Also ich bin mir ziemlich sicher, dass es ein Problem mit meinemFormat ist.scanf format warnung für double

Ich habe versucht, überall nach einer Lösung zu suchen, aber scheint nicht zu finden.

Diese Funktion liest zwei Zahlen ein.

void read(double *n1, double *d1) 
{ 
    printf("Enter the number n1: "); 
    scanf("%1f", n1); 
    printf("Enter the number d1: "); 
    scanf("%1f", d1); 
} 
+1

Für verdoppeln möchten Sie '% lf'. Nicht "% 1f". (Aber es ist leicht, den Unterschied zu verpassen!) –

+1

verwenden Sie "% lf" '(d. H." Long float ") für Doppel –

Antwort

2

Verwenden Sie scanf("%lf", n1) für double; Beachte das "l" (el, nicht "eins"). Wenn Sie mit der Programmierung noch nicht vertraut sind, versuchen Sie, sich mit der Dokumentation vertraut zu machen, z. cppreference. Dort finden Sie beispielsweise die Matrix von Format und Länge für scanf.

Viel Spaß mit Lernen Programmierung, die Verwendung von Google et al, und zögern Sie nicht :-)

+0

Danke für die freundliche Einstellung! – Dustynana

1

Verwenden Sie den Formatbezeichner %lf für den doppelten Datentyp.

+1

Ich sehe jetzt, ich fühle mich so dumm.Ich habe ungefähr eine Stunde daran gearbeitet. noch ziemlich neu in der Programmierung. Danke – Dustynana

2

Sie haben einen Tippfehler und dann Sie dupliziert ...

scanf("%1f", n1); 

geschrieben werden sollte
scanf("%lf", n1); 

Hinweis der Unterschied zwischen l (kleines L) und 1 (Nummer eins).

%lf steht für lange Schwimmkörper, die nicht ein tatsächlicher C-Typ ist, sondern eine Art float (%f) und double (%lf) zu unterscheiden. Die l kann mit d und i verwendet werden, um long int und u für long unsigned int zu spezifizieren.

Diese Zeichen schwer zu unterscheiden, vor allem mit festen Abstand Schriftart für die Programmierung, aus diesem Grunde sollte man vermeiden, dass ein variable l, ll usw. zu benennen und die long Integer-Konstante 1l1L geschrieben werden soll.

+0

wow, so einfach. Vielen Dank! – Dustynana

1

Verwenden richtige Format Spezifizierer für ihre jeweiligen Datentypen

  • float %f
  • double %lf
  • fragen
  • int %d oder %i
  • unsigned int %u
  • char %c
  • char * %s
  • long int %ld
  • long long int %lld
Verwandte Themen