Fehler scanf ?



  • schreibe grad ein C Programm zur Rentenvers.
    [
    #include<stdio.h>

    const double alter_Beitragssatz = 0.256;
    const double alte_Beitragsbemessungsgrenze = 4500;

    double neuer_Beitragssatz;
    double neue_Beitragsbemessungsgrenze;

    int main ()
    {

    printf("Neue Beitragsbemessungsgrenze :");
    scanf("%lf", & neue_Beitragsbemessungsgrenze);
    printf("Neuer Beitragssatz: ");
    scanf(" %lf ", neuer_Beitragssatz);

    printf("\n");

    printf("%-10s%-11s%-11s%-10s%-10s\n", "Einkommen", "Abgabe_Alt", "Abgabe_Neu", "Diff", "Steigerung");
    for (int i = 3000; i <= 6000; i += 100)
    {
    double abgabe_Alt = 0;
    double abgabe_Neu = 0;
    double diff = 0;
    double steigerung = 0;

    if (i > alte_Beitragsbemessungsgrenze)
    {
    abgabe_Alt = alte_Beitragsbemessungsgrenze * alter_Beitragssatz;
    }
    else
    {
    abgabe_Alt = i * alter_Beitragssatz;
    }

    if (i > neue_Beitragsbemessungsgrenze)
    {
    abgabe_Neu = neue_Beitragsbemessungsgrenze * neuer_Beitragssatz;
    }
    else
    {
    abgabe_Neu = i * neuer_Beitragssatz;
    }

    diff = abgabe_Neu - abgabe_Alt;
    steigerung = diff / abgabe_Alt;

    printf("%-10d%-11.2f%-11.2f%-10.2f%-10.3f\n", i, abgabe_Alt, abgabe_Neu, diff, steigerung);
    }
    scanf("%lf",&neuer_Beitragssatz);
    return 0;
    }
    ]
    Fehlermeldung :
    1. int ist nicht definiert und ich weiß erlich nicht wohin damit habs vor main probiert und nach vor der for schleife aber der wollt nicht .

    2. Zeigt er mir an , dass scanf nicht sicher sein soll, stattdessen soll ich scanf_s benutzen . was ist das denn ?


  • Mod

    Du benutzt offensichtlich den Microsoft C-Compiler. Der kann kein C99. in Zeile 22 benutzt du ein C99-Feature, indem du die Schleifenvariable im Schleifenkopf definierst. In C89 sind lokale Variablendefinitionen jedoch nur zu Beginn eines Gültigkeitsbereiches erlaubt.

    scanf_s ist ein Erweiterung der Standardbibliothek und macht genau das was auf der Verpackung steht. Viele Compilerbauer bieten Features an, um die Sicherheit der C-Eingabefunktionen zu erhöhen, aus guten Grund, denn diese liegt in der Hand des Programmierers und viele von diesen wissen nicht, wie es richtig geht. Womit wir beim Stichwort sind: In Zeile 17 benutzt du scanf prompt falsch.

    Bitte benutz für Code unbedingt die Formatierungstags. Zu finden unter dem Editorfenster unter den Smileys. Nutze auch die Vorschau, um deine Beiträge vor dem Absenden auf ihre Lesbarkeit zu prüfen! Als registrierter Nutzer kannst du deine Beiträge auch im Nachhinein noch verändern.


Anmelden zum Antworten