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!