[英]Having trouble with file I/O and string arrays
我正在讀取的文件的名稱用行分隔。 發生的情況是該程序嘗試打印line_array
的內容,它將打印出txt文件中最后一行的大約20行。
#include <stdio.h>
FILE* fp;
int main(){
char* line;
const char* line_array[255];
int i= 0;
int b =0;
fp = fopen("noob.txt","r");
while(fgets(line,255,fp)){
line_array[i]=line;
printf("%s",line);
printf("%s",line_array[i]);
i++;
}
for(;b<i;b++){
printf("%s",line_array[b]);
}
fclose(fp);
return 0;
}
在您的代碼中,第一個問題是
while(fgets(line,255,fp))
line
未初始化使用。 沒有分配給line
內存。 它調用未定義的行為 。
然后,在使用返回的文件指針之前,您沒有檢查fopen()
是否成功。 再次,可能的UB。
最后,通過說
line_array[i]=line;
您要做的是將line
本身存儲到所有出現的line_array[n]
,因此對於以后的printf()
循環,將一遍又一遍地打印line
的最新內容。
解決方案(S):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.