出於某種原因,此代碼是segfaulting因爲我找不到的原因。這段代碼爲什麼會出現問題? (指針算術)
char *read_line(FILE *fp)
{
char *out;
int counter = 0;
char c = getc(fp);
while (c != '\n' && c != EOF)
{
*(out + counter) = c;
counter++;
c = getc(fp);
}
if (c == EOF || feof(fp))
{
return NULL;
}
*(out + counter) = '\0';
return out;
}
我已經嘗試在gdb
運行它,並已經告訴我,段錯誤是在*(out + counter) = c;
。我無法弄清楚我做錯了什麼,其他人可以嗎?
似乎char * out沒有初始化? –
我會將它初始化爲什麼? O.o – AppleDash
如果您想要將數據讀取到某處,您需要提供內存來執行此操作。由於目前代碼「out」僅僅是一個無處不在的指針。並寫到它指向的地方,引發未定義的行爲和崩潰。 – alk