Hi,
ich schreibe gerade ein kleines Programm, dass eine Datei lesen soll (Zeile für Zeile) und dann Zahlen, die durch Leerzeichen getrennt sind, zu extrahieren und in ein Array einzutragen. So weit so gut. Mit einem normalen Array funktioniert auch alles wie es soll, doch sobald ich ein mehrdimensionales Array verwende, in dem die Zeile der Datei gespeichert ist, und das ich mit strtok() zerlegen will, funktioniert es nicht, es kommen völlig kryptische Ergebnisse bei raus. Weiß jemand woran das liegen kann?
Hier noch mein Code:
Die Datei, aus der gelesen wird, sieht ungefähr so aus:
0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 (So grob )
Danke für Antworten:wink:
ich schreibe gerade ein kleines Programm, dass eine Datei lesen soll (Zeile für Zeile) und dann Zahlen, die durch Leerzeichen getrennt sind, zu extrahieren und in ein Array einzutragen. So weit so gut. Mit einem normalen Array funktioniert auch alles wie es soll, doch sobald ich ein mehrdimensionales Array verwende, in dem die Zeile der Datei gespeichert ist, und das ich mit strtok() zerlegen will, funktioniert es nicht, es kommen völlig kryptische Ergebnisse bei raus. Weiß jemand woran das liegen kann?
Hier noch mein Code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *map_datei = fopen("map.txt", "rw");
char daten[1][80];
if (map_datei == NULL)
return -1;
if(fgets(daten[0], 80, map_datei) == NULL)
{
printf("Erste Zeile nicht ermittelt\n");
return -1;
}
printf("daten: %s\n", daten[0]);
char *zwischen_block;
char *block[80];
int i = 0;
while(i <= 80)
{
/* if( ( zwischen_block[i] = (char *)malloc(20) ) == NULL)
{
printf("Konnte keinen Speicher fuer Zwischenblock %i allokieren\n", i);
return -1;
} */
if( ( block[i] = (char *)malloc(20) ) == NULL)
{
printf("Konnte keinen Speicher fuer Block %i allokieren\n", i);
return -1;
}
i++;
}
/* Jetzt den String aus der Zeile zerlegen */
int block_int = 0;
zwischen_block = strtok(daten[0], " ");
while(zwischen_block != NULL)
{
printf("block_int: %i\n", block_int);
block[block_int] = zwischen_block;
printf("%s\n", block[block_int]);
zwischen_block = strtok(NULL, " ");
block_int++;
}
return 0;
}
0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 (So grob )
Danke für Antworten:wink:
Zuletzt bearbeitet: