-2
幾個月前開始編程,所以我的問題可能會讓你感覺不好(對不起)。將文件指針傳遞給函數
可以說,我想從功能打印的東西,我的test.txt文件是這樣的:
主:
int main()
{
FILE *fp;
test(fp);
...
}
功能:
void test(FILE *fp)
{
fp = fopen("test.txt","w"); // it crashed here
...
}
調試在VS說:「變量'fp'正在被使用而未被初始化。「
然後,我決定改變我的主要功能的第一行:
FILE *fp = NULL;
突然,一切工作正常。
有人能解釋我這種行爲嗎?
這是不確定的行爲來讀取未初始化值(也就是當你計算表達式,你在做什麼'測試(FP)')。 –
代碼也沒有意義,再次顯示未定義的行爲是*症狀*,而不是問題。 –
問題是,當測試返回時,變量fp不保留由fopen調用分配給它的值。所以,如果你稍後在main中使用它,你將會遇到問題 – bruceg