所以我一直試圖以各種不同的方式將此分配給工作,但每次我得到不同的錯誤。基本上我們所擁有的是一個程序,需要逐字節讀取將被傳入的文件的內容(文件長度可能很大,所以我們不能只調用malloc並分配一大塊空間)。我們需要使用realloc來擴展釋放的內存量,直到達到文件末尾。最終的結果應該是一個包含每個字節的長C字符串(數組)(如果它們是文件的一部分,我們不能忽略空字節)。我目前所面對的是:從標準輸入(可變長度文件)中讀取
char *buff;
int n = 0;
char c;
int count;
if (ferror (stdin))
{
fprintf(stderr, "error reading file\n");
exit (1);
}
else
{
do {
buff = (char*) realloc (buff, n+1);
c = fgetc (stdin);
buff[n] = c;
if (c != EOF)
n++;
}
while (c != EOF);
}
printf("characters entered: ");
for (count = 0; count < n; count++)
printf("%s ", buff[count]);
free (buff);
應該堅持讀書,直到文件的末尾,每次擴展內存,但是當我嘗試用簡單的文本文件,管道運行它,它告訴我,我有分段錯誤。我不太確定我做錯了什麼。
請注意,我們被允許使用malloc和whatnot,但我不明白如何使這項工作,因爲我們已經知道需要多少內存。
啊,哎呦。我忘了那個。這似乎已經固定它與設置char * buff爲NULL。多謝你們! –