如上所述,我碰巧在为我的 char 数组分配内存时遇到了问题。分配内存的要点是我想读取一个 .txt 文件并将其全部保存在一个 char 数组中,以便以后使用它。 (寻找最大的重复字符串)
在发布之前,我已经在 Internet 上查找了 2 个多小时,但我无法让它正常工作,似乎我遗漏了一些东西,或者只是不完全理解指针是如何工作的,而我真的不明白。
这些评论是德语的,就像我希望没有人介意的一些变量一样。
代码如下:
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# include <string.h>
# include <ctype.h>
# define N 99
# define K 255
main() {
FILE *Test;
long len = 1;
int i = 0;
int k;
// char String[N]; //[100][255] = {" "};
// char* pString;
// pString = String;
Test = fopen("Moby_Dick.txt", "r"); // Datei öffnen, r = lesen | (nicht vergessen DATEINAMEN anzupassen)
if (fseek(Test, 0L, SEEK_END) != 0) { //jump ans Ende
printf("\nFEHLER in SEEK_END");
fclose(Test);
return 3;
}
if ((len = ftell(Test)) < 0L) {
printf("\nERROR in ftell");
fclose(Test);
return 3;
}
if (fseek(Test, 0L, SEEK_SET) != 0) { // jump an den Anfang
printf("\nERROR in SEEK_SET");
fclose(Test);
return 3;
}
char *String = (char*)malloc(sizeof(char)*len + 12); //(char*)
Test = fopen("Eingabe.txt", "r");
do{
fgets(String[i], 500, Test); // jede Zeile wird in einem Feld gespeichert
i++; // zählt die Zeilen hoch
}while(!feof(Test)); // lese bis Dateiende
fclose(Test); // Datei schliessen
for (k = 0; k < 20; k++) {
printf("%s\n----------------------------\n", String[k]);
}
printf("len = %d\n", len);
return 0;
}
感谢我能得到的任何帮助。我希望得到解释,而不仅仅是传递代码。
我是一名优秀的程序员,十分优秀!