<分区>
我正在尝试用 C 编写一个工具。该程序的一部分是使用一个文本文件并逐行读取它,同时将所有行存储到一个数组中以备将来使用。
这就是我目前所拥有的:
int main(){
FILE *fp = fopen("file.txt", "ab+");
if (fp == NULL) {
printf("FILE ERROR");
return 1;
}
int lines = 0;
int ch = 0;
while(!feof(fp)){
ch = fgetc(fp);
if(ch == '\n'){
lines++;
}
}
printf("%d\n", lines);
if (lines>0){
int i = 0;
int numProgs = 0;
char* programs[lines];
char line[lines];
FILE *file;
file = fopen("file.txt", "r");
while(fgets(line, sizeof(line), file) != NULL){
programs[i] = strdup(line);
i++;
numProgs++;
}
for (int j= 0; j<sizeof(programs); j++){
printf("%s\n", programs[j]);
}
fclose(file);
fclose(fp);
return 0;
}
我的问题是我得到这个输出:
6
(文件中的行数)
段错误
如何在不知道该行开头有多长的情况下逐行阅读完整内容。在 PHP 中我可以很容易地做到这一点,但我如何在 C 中做到这一点?
感谢任何提示!