我仍然認爲自己是一個新的webby in CI,我試圖讀取一個文件,文件不是二進制文件,但其大小從小尺寸的kbs到大尺寸文件feb Mbs.I使用fgets函數,我採取了reference from this link但編譯後,我得到分段fault.i試圖用gdb調試它,發現我能夠打開文件,但無法閱讀。這裏是我的代碼。使用fgets讀取文件並在屏幕上打印它的內容
#include<stdio.h>
#define MAX_LENGTH 1048576
int main()
{
FILE *fp;
char *result;
char line[MAX_LENGTH];
fp =fopen("/home/shailendra/sampleprograms/C/shail1.txt","r");
if(result=fgets(line,MAX_LENGTH,fp) != NULL)
printf("The string is %s \n",result);
else
printf("Error opening the file");
if(fclose(fp))
printf("fclose error");
}
該段錯誤真的很爛你blood.I明白,這是由於內存分配不足,但我用了MAX_LENGTH 1048576,所以我不認爲它必須創造任何疑難問題曾與試了一下包含只有一行的小文件和包含多行的大文件,但我無法弄清爲什麼我得到分段錯誤。
「新威比」? :) – trojanfoe
如果你在一個POSIX兼容的系統上,那麼使用'stat'來獲取文件大小,並將該內存量準確地分配爲一個緩衝區(這就是說,如果你必須一次讀取所有文件)。 – trojanfoe