Parser
-
Seh gerade value ist jetzt ein pointer
int parse(char *string, char *name, double *value, char *unit) { if (3 == sscanf(string, "%[^:]:%lf [%[^]]", name, &value, unit)) {
dann mach's so
int parse(char *string, char *name, double *value, char *unit) { if (3 == sscanf(string, "%[^:]:%lf [%[^]]", name, value, unit)) {
Kurt
-
Es geht!
Lag am VS6!
Aber irgend etwas klappt mit dem Datenfeld noch nicht, welches ich aufgespannt habe.
double **dataBag = (double**) malloc(sizeof(double *) * ydim); for (i = 0; i < ydim; ++i) { dataBag[i] = (double*) malloc(sizeof(*dataBag) * xdim); } i=0; do { printf("> Scanne %d. Datei: %s\n", i+1, pLIST[i].filename); fPtr = fopen(pLIST[i].filename, "r"); if (fPtr != NULL) { // Spaltenindex zurücksetzen j=0; while (!feof(fPtr)) { // Textzeile auslesen fgets(string, max, fPtr); RetVal = parse(string, name, &value, unit); if (RetVal == 1) { // Daten ins Feld speichern dataBag[i][j] = value; j = j + 1; } } fclose(fPtr); } else { /// !!! Umlaute suchen printf("> Die Datei: %s konnte nicht ge%cffnet werden. Weiter...\n", pLIST[i].filename, 123); } i=i+1; } while (i < nums);
Solange ich nur eine Datei einlese (aus meiner Liste pLIST) funktioniert das Programm - SUPER!!! Genau wie es soll.
Sobald ich aber mehrere Dateien nacheinander Scanne - also in mehreren Zeilen von dataBag einen Wert ablegen will - stehen in der Matrix dataBag schwachsinnige Werte.
-
fehler liegt da
for (i = 0; i < ydim; ++i) { dataBag[i] = (double*) malloc(sizeof(*dataBag) * xdim); }
*dataBag ist ein pointer auf double ( bei mir 4 byte gross )
sollte aber double sein ( bei mir 8 bytes gross ).
Mach's sofor (i = 0; i < ydim; ++i) { dataBag[i] = (double*) malloc(sizeof(double) * xdim); }
Kurt
-
Leider nicht?!
Es kommt immer noch zum Ausnahmefehler.
-
wüde es mal so probieren Vielleicht sind mehr Werte in einer Datei als du annimmst
while (!feof(fPtr) && j < xdim ) {
BTW du solltest IMMER auf Überlauf überprüfen.
Kurt