EXE hat ein Problem und muß beendet werden



  • Hallo,

    ich schreibe gerade ein paar kleine C Programme und dabei ist folgender Fehler aufgetreten.
    Beim Ausführen der exe ist alles noch ok aber wenn man eine Zahl eingibt und mit Return die bestätigt dann kommt die Windows Fehlermeldung
    "*.EXE hat ein Problem und muß beendet werden... Bericht senden....".
    Und das Programm bricht ab.
    Beim Compilieren sind 0 Warnungen und 0 Fehler.

    Ich benutze als Entwicklerumgebung Borland Visual C++ und Dev C++.
    Bei beiden Programmen und auf unterschiedlichen Rechnern tritt der Fehler auf.

    Hier der Code:

    #include <stdio.h>
    
    int main(void)
    {
    int a,b,c,d;
    a = 0;
    b = 0;
    c = 0;
    d = (a+b+c);
    
    printf ("Berechnung Zahlen!\n");
    
    printf ("Bitte geben sie die ertste Zahl ein!\n");
    scanf ("%d", a);
    
    printf ("Bitte geben sie die zweite Zahl ein!\n");
    scanf ("%d", b);
    
    printf ("Bitte geben sie die dritte Zahl ein!\n");
    scanf ("%d", c);
    
    printf ("Das Ergebnis von %d + %d + %d ist %d\n", a,b,c,d);
    return 0;
    }
    

    Ist da ein Fehler im Code oder woran kann das liegen?

    Danke

    LG

    maik_gyver



  • %d bei scanf() erwartet einen Zeiger auf int.



  • Und das ist kein VHDL sondern C. Wenn du d = (a+b+c); machst, dann heißt es nicht, dass der Compiler immer d als die Summe von a,b,c interpretiert, wenn a,b oder c sich ändert. Für den Compiler heißt nur, dass d zu diesem Zeitpunkt mit der Addition von a, b und c zugewiesen wird. Da a, b und c 0 sind, dann ist d auch 0. Wenn du später a,b oder c änderst, ändert sich b nicht.



  • Danke für die Antworten hab es jetzt so genacht und es Funtioniert so auf den ersten Blick.

    #include <stdio.h>
    
    int main(void)
    {
    int a,b,c,d;
    a = 0;
    b = 0;
    c = 0;
    d = 0;
    
    printf ("Berechnung Zahlen!\n");
    
    printf ("Bitte geben sie die ertste Zahl ein!\n");
    scanf ("%d", &a);
    
    printf ("Bitte geben sie die zweite Zahl ein!\n");
    scanf ("%d", &b);
    
    printf ("Bitte geben sie die dritte Zahl ein!\n");
    scanf ("%d", &c);
    
    d = (a+b+c);
    
    printf ("Das Ergebnis von %d + %d + %d ist %d\n", a,b,c,d);
    system("Pause");
    return 0;
    }
    

    also bei z.B. scanf ("%d", **&**a); ein & vor die Variable a gesetzt.

    Gruß

    maik_gyver


Anmelden zum Antworten