fscanf werte in Array speichern



  • Hallo

    ich hab mal ne Frage. Ich möchte ein Programm schreiben welches werte aus einer Textdatei liest und in ein Arrayapeichert. Die Werte sollen Punktkoordinaten in der Form x,y,z sein. Das heißt die Textdatei sieht so aus:
    Bsp.:

    3,7,9
    1,7,4
    7,5,3

    Desweiteren hab ich mir eine Header Datei geschrieben.

    typedef struct
    {
    float x;
    float y;
    float z;
    }POINT;

    In der Main.c

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define FELD 100

    int main(int argc, char *argv[])
    {
    POINT punkt;
    POINT vec_ges[FELD]; //Hier sollen die Punkte gespeichert werden
    FILE *datei
    //Fehlerfälle spar ich mir jetzt mal

    while((fscanf(datei, "%d,%d,%d\n", &punkt.x, &punkt.y, &punkt.z)) != EOF);

    //jetzt würde es weitergehen

    return 0;
    }

    So ich muss es irgendwie schaffen das er mir die Punkte aus der Datei einliest und im Array mit der verbindung zur struktur speichert.
    Ich muss dann die Punkte nehmen und den Euklidischen Abstand zu einem Referenz Punkt bestimmen ( den rest des Quellcodes habe ich bereits ) es geht halt nur um die speicherung im Array.

    geht eigentlich sowas wie
    int i=0;
    while(datei != EOF)
    {
    vec_ges[i] = fscanf(datei, "%d,%d,%d\n", &punkt.x, &punkt.y, &punkt.z);
    i++
    }
    Danke im voraus



  • Hi !

    int i = 0;
    	int n = 0;
    
    	// Deine Strukturarrays kannst du mit einem Index adressieren:
    	while ( !feof ( datei ) )
    	{
    		fscanf(datei, "%d,%d,%d\n", &vec_ges[i].x, 
    			&vec_ges[i].y, &vec_ges[i].z); 
    		// ... Fehlerfälle sparen 
    		i++;
    		if ( i == FELD ) // Verhindet Überschreitung der Arraygrenze
    			break;
    	}
    
    	// Schicker und effizienter mag das hier sein:
    	n = fread ( &vec_ges, sizeof( POINT ), FELD, datei ); // keine Kommas zwischen den Werten 
    	// n hat jetzt die Anzahl der eingelesenen Strukturen.
    

    Gruß,
    B.B.


Anmelden zum Antworten