如果我明確聲明緩衝區大小,我似乎只能將文件讀入內存。這工作將文件讀入內存?
#include <stdio.h>
int main(){
FILE *fp = fopen("test.log", "rb");
char buffer[37];
fread(buffer, 1, 36, fp);
printf("%s", buffer);
}
這將增加垃圾到輸出
#include <stdio.h>
int main(){
FILE *fp = fopen("test.log", "rb");
fseek(fp, 0, SEEK_END);
long siz = ftell(fp);
rewind(fp);
char buffer[siz + 1];
fread(buffer, 1, siz, fp);
printf("%s", buffer);
}
概念錯誤。在C中,任何數組的聲明都應該指出在編譯時的大小。如果要動態創建數組,請使用'malloc' – texasbruce 2012-08-04 17:43:58
以二進制模式打開文件,但將其打印爲字符串。這隻適用於數據確實是文本的情況。另外,您不會終止緩衝區。請記住,在創建數組時它不會自動清零。 – 2012-08-04 17:47:31
也許無關緊要,因爲它不能確定數據的實際內容,你不是'NUL'終止你的字符串。嘗試在字符數組的末尾添加'\ 0'並查看它打印出來的內容。 – 2012-08-04 17:50:40