2017-08-06 65 views
1

如果我沒有記錯的話,我的教授曾經說過,將文件指針作爲參數傳遞給函數被認爲是一種糟糕的編程習慣。文件指針和函數

有人可以解釋爲什麼嗎?

編輯:對不起,如果我在這裏引起某種神聖的戰爭,但至少澄清一點點,說教授講授與C的入門級編程課。他說了一些沿着這些線跟着一些談論「更大的程序」並不知道誰(什麼功能)關閉文件。

它發生在幾個月前,當時我沒有太多的學習動力,現在當我這樣做的時候,只是彈到我腦袋裏。

+2

壞習慣通常是主觀的,並且是一個意見。我擔心這樣的問題被認爲是SO的主題。 –

+0

爲什麼他不使用'fgets'? – BLUEPIXY

+3

將文件指針傳遞給函數沒有任何問題。也許教授正在談論更具體的情況。 – interjay

回答

-1

將文件指針傳遞給函數本身並不是一個壞習慣。如果我們爲這個問題添加更多的上下文,那麼這可能會變成一個不好的習慣。例如,不建議將文件指針傳遞給UI功能,但問題不在於文件指針不好,而是將邏輯與UI分開是很好的做法。或者,如果我們進一步思考,函數可能會對文件執行某些操作,例如刪除它。在這種情況下,不建議將文件指針傳遞給函數,但不要確保一切都正確。該函數應該處理所有常見問題場景,並且您調用它的地方應該處理特定的問題場景。

+1

您的意見不是答案。編寫可以做他們應該做的事情而沒有錯誤的函數是一種很好的做法。 –

+1

@PeterJ我相信在傳遞函數指針作爲參數方面沒有任何錯誤,除非經過證明。一般來說,文件指針不應該傳遞給UI函數。我懷疑你會發現任何可以被認真對待的人誰會有不同的意見。這些都是常見的做法。是的,我可能是錯的,但由於我的發言是有根據的,我希望看到至少有一些好的論點指向不同的方向。如果你有任何。 –

+0

C中的UI函數是什麼?標準沒有提到。也許你應該編寫你的請求 –

0

我認爲傳遞文件指針是最好的做法,因爲即使標準的buildt-in函數也會傳遞一些文件指針(例如fprintf n fscanf)。另一方面,如果您不傳遞文件指針,則必須傳遞文件路徑或創建全局文件指針。在第一種情況下,你會在函數調用中失去重新打開文件的時間(讓我知道我是否錯過了某些東西)。如果你創建一個全局指針,你不注意你可以在打開時輕鬆調用全局指針。對不起,很長的回答和(希望不是)語法錯誤