wie kann man mehrere Dat-Datei in C-Program einlesen ?

Pyata

Grünschnabel
Hii.. erfahrenere Programmerin und Programmer,

ich bin vor kurzem mit dem Programming beschäftigt, deswegen weiss ich momentan auch nicht so viel über die Befehle.
ich habe folgende Probleme und hoffe dass Ihr mir dabei helfen kann, und zwar: ich habe verschiedene Dat-Dateien in Matlab erzeugt (diese Dateien bestehen aus nur Zahlen in Matrix- Form [9 x 23] ) und möchte aber diese Dateien in meine C-Programm einlesen. ich brauche aber nur ein Teil von diese Zahlen, in Matrix-Form ist es [9 x 18].
wie soll ich am besten das was ich will, in C-sprache schreiben ?

in Matlab kann man sehr einfach mit dem Befehl "textread" in einem Object einlesen und dann weiter verarbeiten. gibt es auch entsprechende Befehle in C-Sprache ? sowie "load" usw. wo kann ich die Zusammenfassung von Befehle in C-Sprache finden.
liest das Befehl "fread" nur die binären code von den Daten ein ?

vielen vielen Dank für die Antwort

grüss
Pyata
 
Code:
#include <fstream>

fstream datei;
string text;

datei.open("pfadunddateiname"); 

while(!datei.eof())                       //Wiederholung für jede Zeile
{
    getline(datei, text);
    cout << text;
} 

datei.clear();
datei.close();
hoffe es hilft dir

LG
Helpless
 
Vielen Dank für die Antwort.

bin aber noch unklar.

liest den obige Code nur einzelnen File, oder ?
wenn ich aber 5- Dateien habe, die ich gleichzeitig einlesen will, muss ich diese Code dann 5 Mal wiederholen ? :confused:

was bedeutet eigentlich die befehl " Datei.clear() " . wird die Datei am Ende wieder gelöst ? warum ? sie wollte ich doch weiter verwenden, während das Progamm läuft. :confused:

kann man diese Input Dateien als Input an dem Programm anhängen, damit es jede Zeit wiederverwendbar ? wie heisst die Befehl ?

was ist der Unterschied zwischen fread und fstream
ist das der eine in C und der anderen in C++ ?

Tur mir Leid, wegen der vielen Fragen, aber so ist ja einer der wenig Ahnung hat ^_^

ich danke Euch noch mal für die Antwort.
Danke

grüss
Pyata
 
Code:
#include <fstream>

fstream datei;                          //datei ist die Variable in die deine Datei eingelesen wird 
fstream datei1;                        //datei1 ist die Variable in die deine Datei1 eingelesen wird
fstream datei2;                        //datei2 ist die Variable in die deine Datei2 eingelesen wird   
// etc.....

string text;
string text1;
string text2;

//pfadunddateiname kann ein beliebiger String sein 
//datei wird zum lesen geöffnet
datei.open("pfadunddateiname"); 
datei1.open("pfadunddateiname1");
datei2.open("pfadunddateiname2");

//---------------------------------------------------------------
// Nur für datei nicht für datei1 o. datei2 
// Kann aber wiederholt werden ....
// oder du schreibst es in eine Funktion 
//---------------------------------------------------------------
while(!datei.eof())                       //geht Zeile für Zeile datei durch  
{
    getline(datei, text);                //ließt die Zeilen 
    cout << text;                        //gibt die Zeilen aus
} 
//----------------------------------------------------------------

//hiermit machst du die Variable leer 
datei.clear();
//hier wird die Datei geschlossen 
datei.close();

//datei1.clear();
//etc...

was bedeutet eigentlich die befehl " Datei.clear() " . wird die Datei am Ende wieder gelöst ? warum ? sie wollte ich doch weiter verwenden, während das Progamm läuft.
naja dann schreib es hinter deine Anweisung oder wenn du die Datei öfter durchläufst, dann kannst du sie schließen und wieder öffnen ....

hoffe konnte ein bisschen helfen auch wenn es nur in c++ ist ...
und ein Tipp von mir: nimm erstmal das Einsteiger Buch und fange langsam an...
wenn du dich mit Schleifen und Prozeduren dann auskennst musst du so etwas nicht mehr fragen...

wenn ich aber 5- Dateien habe, die ich gleichzeitig einlesen will, muss ich diese Code dann 5 Mal wiederholen ?

MFG Helpless
 
Hallo Rookie,

kannst Du mir mal korrigieren, ich habe jetzt für meine Probleme(um verschiedene File einzulesen) diese Code geschrieben, weiss aber nicht, ob das funktioniert wird ?

zuerst habe ich ein Funktion geschrieben und danach diese Funktion mehrfach verwendet.
die einzulesende Dateien hat jeweils eine Zeile von 9 und Colomn von 22.
Code:
#include <stdio.h>
#define ROW 8
#define COLUMN 22
typdef real mtx01 [ROW][COLUMN] 
typdef real mtx02 [COLUMN][ROW]

mtx02 readfile( char filename )
{
	real UDF_Inp [22][8];
	File *fp;
	
	if( (fp=fopen("filename","r")) == NULL){
		fprintf(stderr, "Error opening file.");
		exit(1);
	}
	
	fscanf(fp, "%f", &Arrh_P);
	
	fclose(fp);
	return(0);
}

/*Da das Befehl " fscanf " liest die Dateien Zeile pro Zeile, wird das Matrix zu [22x9]*/
/* deswegen muss hier transponiert werden, deswegen habe ich noch mal ein funktion geschrieben zum Transponieren*/

void transpose(mtx02 a)
{
	mtx01 b;
	int r,c;
	
	for (c=0;c<COLUMN;i++){	
		for (r=0;r<ROW;j++){
			b[r][ c] = a[ c][r];
		}
	}
}

/*nun in den Main Program habe ich einfach die Funktion aufgerufen um die einzelne Dateien einzulesen */
main() { 
                mtx01 Arrh_P_0000;
                mtx01 Arrh_P_0025;
                mtx01 Arrh_P_0050;

                mtx02 X0000 = readfile(char "/UDF_INPUT/udf_inp_X0000.dat");
                mtx02 X0025 = readfile(char "/UDF_INPUT/udf_inp_X0025.dat");
                mtx02 X0050 = readfile(char "/UDF_INPUT/udf_inp_X0050.dat");
	
	Arrh_P_0000 = transpose(X0000);
                Arrh_P_0025 = transpose(X0025);
                Arrh_P_0050 = transpose(X0050);
}

ich danke Dir für die Korrektur im Voraus :)


grüss
Pyata
 
Zurück