2017-08-06 69 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)。另一方面,如果您不传递文件指针,则必须传递文件路径或创建全局文件指针。在第一种情况下,你会在函数调用中失去重新打开文件的时间(让我知道我是否错过了某些东西)。如果你创建一个全局指针,你不注意你可以在打开时轻松调用全局指针。对不起,很长的回答和(希望不是)语法错误