Hallo,
ich versuche mich seit einer Woche mit Visual C++. Bin also noch blutiger Anfänger.
Im Moment versuche ich folgendes Problem zu lösen.
Ich habe ein e große Textdatei, die folgendermaßen aufgebaut ist.
In der ersten Zeile steht X Y und dann Zahlen mit führenden Nullen von 1 bis n( Bildnummern)
Danach folgen Zeilen mit in Spalte 1 und 2 die x und Y Koordinaten und dann Gleitkommazahlen.
Alle durch Tab getrennt.
Ziel der Anwendung soll es sein n Dateien zu erzeugen, die für jedes Bild die Gleitkommazahlen in Zeilen und Spalten sortiert, also
y x->
| z(xy)
V
Dabei habe ich mir gedacht, das ich die Input-Datei erstmal zeilenweise in ein mehrdimensionales Array einlese, da die Koordinaten sortiert sind, sollte die Ausgabe dann relativ einfach sein, denke ich.
Ich hab aber da massive Verständnisprobleme, also hab ich es erstmal mit char Probiert.
Die Anzahl der Zeilen und Spalten wird in dem Beispiel schon richtig ausgelesen, aber in z.B. Feld[0] steht völliger quatsch und in allen Feld[ i i>0 steht immer die letzte Zeile.
Kann mir jemand erklären warum? Und wie es richtig währe. Im Idealfall.
ich versuche mich seit einer Woche mit Visual C++. Bin also noch blutiger Anfänger.
Im Moment versuche ich folgendes Problem zu lösen.
Ich habe ein e große Textdatei, die folgendermaßen aufgebaut ist.
In der ersten Zeile steht X Y und dann Zahlen mit führenden Nullen von 1 bis n( Bildnummern)
Danach folgen Zeilen mit in Spalte 1 und 2 die x und Y Koordinaten und dann Gleitkommazahlen.
Alle durch Tab getrennt.
Ziel der Anwendung soll es sein n Dateien zu erzeugen, die für jedes Bild die Gleitkommazahlen in Zeilen und Spalten sortiert, also
y x->
| z(xy)
V
Dabei habe ich mir gedacht, das ich die Input-Datei erstmal zeilenweise in ein mehrdimensionales Array einlese, da die Koordinaten sortiert sind, sollte die Ausgabe dann relativ einfach sein, denke ich.
Ich hab aber da massive Verständnisprobleme, also hab ich es erstmal mit char Probiert.
Die Anzahl der Zeilen und Spalten wird in dem Beispiel schon richtig ausgelesen, aber in z.B. Feld[0] steht völliger quatsch und in allen Feld[ i i>0 steht immer die letzte Zeile.
Kann mir jemand erklären warum? Und wie es richtig währe. Im Idealfall.
Code:
#define MAXLEN 60
#define MAXZEIL 10
#define MAXSPALT 10
int i;
int j;
FILE * fp = fopen(m_sInput,"r");
char buf[ MAXLEN ] = { 0 };
char seps[] = "\t\n";
char* token;
char * (*Feld)[MAXSPALT];
Feld = new char *[MAXZEIL][MAXSPALT];
i=0;
while( fgets( buf, MAXLEN, fp ) != NULL )
{
j=0; //Spalten
token=strtok(buf,seps);
while (token != NULL)
{
Feld[i][j]=token;
j++;
token=strtok(NULL,seps);
}
//fprintf( stdout, "%s" , buf );
i++;
}
m_FileSize.Format("%i",i);
m_sSpalten.Format("%i",j);
m_sdx.Format("%s",Feld[0][5]);
UpdateData(FALSE);
fclose( fp );
Zuletzt bearbeitet: