Fehlermeldung, sobald neue int variable deklariert wird



  • Hallo, habe folgendes Programm, sobald ich die Variable zaehler2 deklariere, stürzt das Programm ab, egal welche int variable ich zusätzlich zu den zwei variablen (a, zaehler) deklariere, es stürzt immer ab...

    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<iostream>

    using namespace std;

    typedef struct
    {
    double x;
    double y;
    } VEKTOREN;

    typedef struct
    {
    double x;
    double y;
    double Abstand;
    } VEKUABS;

    int main (void)

    {

    FILE * Zeiger;
    VEKTOREN * Koordinaten;
    int a =0, zaehler2, zaehler = 0;
    double *Abstand;
    VEKUABS *Einfueger;
    /*Einlesen der Daten*/

    Zeiger = fopen ("6_1.txt", "r");

    Koordinaten = (VEKTOREN *)malloc(sizeof(VEKTOREN));

    while(fscanf(Zeiger, "%lf %lf", &(Koordinaten[zaehler].x), &(Koordinaten[zaehler].y)) != EOF)
    {
    Abstand[zaehler] = sqrt((Koordinaten[zaehler].x)(Koordinaten[zaehler].x)+(Koordinaten[zaehler].y)(Koordinaten[zaehler].y));
    Koordinaten = (VEKTOREN ) realloc (Koordinaten, (++zaehler+1)*sizeof(VEKTOREN)); /*Berechnen des Abstande/

    }

    while(a<zaehler)
    {
    printf("%lf\t%lf\t%.2lf\n", Koordinaten[a].x, Koordinaten[a].y, Abstand[a]); /*Ausgabe der eingelesenen Daten und Abstände*/
    a++;
    }

    a=0;

    Einfueger = (VEKUABS *)malloc(sizeof(VEKUABS));

    while (a<zaehler)
    {
    Einfueger = (VEKUABS 😉 realloc (Einfueger, (zaehler2+1)*sizeof(VEKUABS));
    Einfueger[a].x = Koordinaten[a].x;
    Einfueger[a].y = Koordinaten[a].y;
    Einfueger[a].Abstand = Abstand[a];
    zaehler2++;
    a++;

    }

    system("pause");

    }



  • Abstand wird uninitialisiert benutzt. Dass es ohne zaehler2 läuft, ist reiner Zufall.



  • Bitte Cpp-Tags verwenden!



  • #include<iostream> /* was ist das denn? */
    
    using namespace std; /* was ist das denn? */
    
    Koordinaten = (VEKTOREN *)malloc(sizeof(VEKTOREN)); /* was soll der Cast hier? */
    
    Einfueger = (VEKUABS *) realloc (Einfueger, (zaehler2+1)*sizeof(VEKUABS)); /*welchen Wert hat zaehler2 hier wohl? */
    


  • Ein ordentlicher Compiler sollte eine zwar deklarierte aber nicht initialisierte Variable (zaehler2) zumindest anmeckern, wenn sie verwendet wird. Besser ist es jedoch, selbst mit Deklarationen, Initialisierungen, oder Zuweisungen für Klarheit zu sorgen! Solche Dinge probiert man selbst aus, bevor man da in einem Forum fragt! 😃


Anmelden zum Antworten