Array in Laufzeit erstellen
-
Hallo,
Ich lesen Zeilenweise aus einer Textdatei:
char str[I_DIC_STR_LEN]; FILE * fp; const char * const filename = "english.dic"; if ((fp = fopen (filename, "r")) == NULL) { fprintf(stderr,"%s could not be found. Programm is terminating now!\n",filename); exit(-1); } while (fgets(str, I_DIC_STR_LEN, fp)) { ...... } fclose(fp);Das klappt soweit.
Dazu hab ich aber eine Frage: Wie kann ich abfragen wie viele Zeilen die Datei hat?Nun meine eigentliche Frage:
Wie kann ich Zeile für Zeile in ein Array schreiben?
Das Array muss dann während der Laufzeit erstellt werden. Wie geht das?Gruß,
DFI10XPS: Warum dauert das so ewig bis die Registrierungsmail ankommt?
-
int *TestArray = new int[VariableCount];
So müsste es afaik gehen...
-
Das versteh ich nicht ganz

Also ich lese Strings zeilenweise aus einer Datei und die sollen in ein Array.
while (fgets(str, I_DIC_STR_LEN, fp)) { ...... }Da wo die ..... sind muß das ganze hin
-
Hallo!
Vielleicht so:
int count = 0; char **line = NULL; char str[I_DIC_STR_LEN]; FILE * fp; const char * const filename = "english.dic"; if ((fp = fopen (filename, "r")) == NULL) { fprintf(stderr,"%s could not be found. Programm is terminating now!\n",filename); exit(-1); } while (fgets(str, I_DIC_STR_LEN, fp)) { count++; if (!line) line = (char **)malloc(count * sizeof(char *)); else line = (char **)realloc(line, count * sizeof(char *)); line[count - 1] = (char *)malloc(strlen(str) * sizeof(char)); strcpy(line[count - 1], str); }Gruss
Michael
-
Ups!!
Dummer Fehler:
line[count - 1] = (char *)malloc((strlen(str) + 1) * sizeof(char));Das Array noch mit NULL terminieren:
while (fgets(str, I_DIC_STR_LEN, fp)) { ...... } line = (char **)realloc(line, (count + 1) * sizeof(char *)); line[count] = NULL;
-
Danke

-
Hab doch noch ein Problem

In der Funktion ist das Array schön ansprechbar, aber leider nicht mehr ausßerhalb...
char **line = NULL; int iArrayLenght; int i; const char * const filename = "english.dic"; readLinesFromFile (line, filename, &iArrayLenght); printf("%i\n",iArrayLenght); for(i = 0; i < iArrayLenght; i++) printf("%s\n",line[i]);Also in der Funktion readLinesFromFile kann ich das Array ausgeben, aber in der for-Schleife nicht mehr. Das Programm schmiert ab.
iArrayLenght kommt aber an...Hab keinen Plan was ich falsch mach...

-
Hast du die Variable global deklariert?
Falls lokal, wo?
-
int readLinesFromFile (char ** array, const char * const filename, int * lenght); int main (void) { char **line = NULL; ........ readLinesFromFile (line, filename, &iArrayLenght); }Schon lokal, in main....
-
Hallo!
Lass 'readLinesFromFile' line als return-Wert zurückgeben.
line = readLinesFromFile (line, filename, &iArrayLenght);Schönen abend noch!

Gruss Michael
-
Cuul :D, das geht. Nochmal danke!