文件指针位置

时间:2009-09-02 14:19:28

标签: filesystems

这可以吗?我的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)
}

2 个答案:

答案 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
}