这可以吗?我的filepointer会在XYZ()中搞砸了吗?
function XYZ()
{
fopen(myFile)
// some processing
// I am in the middle of the file
Call ABC()
}
ABC ()
{
fopen(myFile)
//do some processing
fclose (myFile)
}
答案 0 :(得分:1)
如果您打开文件的其他句柄,然后不,您以前的句柄将不受影响。就像你在记事本上打开文件两次一样,你将光标移动到第一个实例中的一个部分,但光标不会在另一个实例中移动。
(不好的例子,我知道......)
答案 1 :(得分:1)
这是糟糕的形式,即使它在技术上可能是正确的。 更好的方法是
function XYZ()
{
handle = fopen(myFile)
// some processing
// I am in the middle of the file
Call ABC(handle)
fclose(handle)
}
ABC (handle)
{
//do some processing on handle
}
如果您的语言支持try-finally construct,我强烈建议您使用该语言 即:
function XYZ()
{
handle = fopen(myFile)
try
{
// some processing
// I am in the middle of the file
Call ABC(handle)
}
finally
{
fclose(handle)
}
}
ABC (FilePtr handle)
{
//do some processing on handle
}