[C] scanf und double??

Von: , Frage gestellt am Fr, 4. Mai 2001

Hi Experten!

Ich programmiere unter Linux mit gcc v. 2.95.2. Mein Problem: Scheinbar will scanf double-Zahlen nicht einlesen.

Hier dads Programm:

#include <stdio.h>

int main()
{
double *zahl;
*zahl = 100.0;
printf("Bitte Zahl eingeben :");
scanf("%f",zahl);
printf("Eingegeben: %f\n",*zahl);
}

Egal was ich eingebe, der Ausgabewert ist immer 100, also der definierte Wer. Setze ich zahl auf float oder int, funktioniert es einwandfrei.

Weiss jemand rat?

Gruss

lex.

4 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: [C] scanf und double??

    Hi Experten!

    Ich programmiere unter Linux mit gcc v. 2.95.2. Mein Problem:
    Scheinbar will scanf double-Zahlen nicht einlesen.

    Hier dads Programm:

    #include <stdio.h>

    eingeben :"); scanf("%f",zahl);
    Egal was ich eingebe, der Ausgabewert ist immer 100, also der
    definierte Wer. Setze ich zahl auf float oder int,
    funktioniert es einwandfrei.
    Hi Lexus,

    das habe ich auch noch nie probiert. Aber versuch es doch mal mit
    scanf(%lf,&zahl);

    scanf braucht die Adresse der Variable in die geschrieben werden
    soll ?!

    Zum anderen liest Du eine float ein. Um ein double lesen zu
    können ist ein lf notwendig.

    Gruß

    Micha

  2. Antwort von nach 2 Stunden 0 hilfreich
    Re: [C] scanf und double??

    Hallo Lexus,

    in Deinem Programm wird nur ein Zeiger auf double deklariert, d. h. Du greifst mit diesem Zeiger irgendwo in der Pampa zu. Es sollte etwa so aussehen:

    double zahl = 100.0;
    printf("Bitte Zahl eingeben :");
    scanf("%lf",&zahl);
    printf("Eingegeben: %lf\n",zahl);

    Gruß Patrick

  3. Antwort von nach 5 Stunden 0 hilfreich
    Re: [C] scanf und double??

    hallo
    wenn du eine double zahl eingeben möchtest dann musst du
    zuerst eine double variable und nicht zeiger auf double denn
    die speicher unterschiedlich sind.
    einfach
    double zahl;
    double *zeiger=&zahl;
    scanf("%lf",&zahl);
    printf("%lf",*zeiger);

    du musst zeiger initialiesiren sonst kann es zu fehler führen
    sag mir bescheid wenn du es probierst

    • Antwort von nach 7 Stunden 0 hilfreich
      Re^2: [C] scanf und double??

      Hi!

      Ja, da hast Du völlig recht! Hat bestens geklappt, danke.

      Gruss

      Lex. [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!