Matrizen aus Datei einlesen und wieder ausgeben



  • Hallo.

    habe ein kleines Problem.
    Ich muss mit fscanf matrizen einlesen die in einer Datei wie folgt abgespeichert sind:

    1 1 Dimension (Zeilen, Spalten)
    4 Matrix

    2 3
    5 3 5.3
    3 5 9

    Die Anzahl dieser Matrizen ist nicht bekannt. Leider weiß ich nicht wie ich das mit den Dimensionen anstellen soll. Diese müssen mitgespeichert werden, da diese anschließend mit ausgegeben werden müssen.. Desweiteren weiß ich nicht wie ich die Eingabe realisieren soll, da nach jeder dimension/matrix kombination eine leerzeile folgt. Könnte da evtl "\n" helfen?

    Hier mein bisheriges programm:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct
    	{
    		int 	 dimension[1][1];  
    		double matrix[101][101];
    	}MATRIX;
    
    int main(void)
    {
    
    MATRIX *feld;
    
    feld = (MATRIX *)malloc(sizeof(MATRIX));
    	int anzahl = 0, rueckgabe, i;
    
    FILE *f;
    
    	f=fopen("matrix.txt","r");
    
    	rueckgabe = fscanf(f,"%d %lf",(*feld).dimension,(*feld).mat);
    
    	while(rueckgabe != EOF)
    	{
    	anzahl++;
    	feld = (MATRIX *)realloc(feld, (anzahl + 1)*sizeof(MATRIX));
    
    	rueckgabe = fscanf(fp,"%d %lf",(*(feld+anzahl)).dimension,*(feld+anzahl).mat);
    	}
    
    	fclose(f);
    
    for(i=0; i<anzahl; i++)
    {
    
    printf("Ausgabe: %d, %lf \n", (*(feld+i)).dimension,(*(feld+i)).mat);
    
    }
    

    Vielen Dank für eure Hilfe!



  • 1 2 3 4
    5 6 7 8
    
    9 8 7
    6 5 4
    3 2 1
    
    2.718 4 6 8 10.5
    
    9
    7
    5
    3.14
    

    da brauchst du keine dimensionen mitspeichern. lesbar sind die auch ganz prima. du musst dann nur die dimensionen deiner datenstruktur im arbeitsspeicher mit realloc() bedarfsmaessig vergroessern.


Anmelden zum Antworten