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,3Desweiteren 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 100int 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 malwhile((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.