无法以二进制模式C语言从文件中读取数据

时间:2011-06-23 07:39:12

标签: c file

当我尝试打开文件以二进制模式读取时,我遇到了问题。

代码是这样的:

PT_LONG LoadDataFromFile1(const char *pFileName,
                          unsigned char **ppBufer, PT_LONG *pLenData )
{
    PT_LONG retVal = 0;
    PT_DWORD fileLength = 0,len,i;
    unsigned char *buff,fn[35];
    unsigned char buff1[500];
    FILE *fil = NULL;

    fil = fopen(pFileName, "rb" );
    if ( fil != NULL )
    {
        fseek( fil, 0, SEEK_END );
        fileLength = ftell( fil );

        if ( fileLength > 0 )
        {
            *ppBufer = (unsigned char *) malloc( fileLength );
            *pLenData = (PT_DWORD) fileLength;
            printf("\n\n test file length:%d\n\n",fileLength);
            fseek( fil, 0, SEEK_SET );
            fread( *ppBufer, 1, fileLength, fil );                         
        }
        else
        {  
            retVal = -2;
        }
        fclose( fil );
    }
    else
    {  
        retVal = -1;
    }
    return retVal;
}

下面

如果pFileName=/mnt/jffs2/bir/1234.bir它工作正常。但是如果pfilename=/mnt/jffs2/bir/11772213A7894568.bir我无法从文件中读取数据。它返回-1。

2 个答案:

答案 0 :(得分:0)

如果一个文件有效,而另一个文件返回-1(在您的情况下无法打开文件),那么文件路径的问题是99%:-) 请仔细检查文件的路径。

答案 1 :(得分:0)

你是如何获得文件名的?

我怀疑其中一个有附加的尾随换行符,你真的尝试打开".../something.bir\n"而不是".../something.bir"

我建议您编写一个trim函数(或两个:ltrimrtrim)并在打开文件名之前对其进行处理。