当我试图打开一个文件以二进制模式读取时,遇到了一个问题。
代码是这样的:
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("nn test file length:%dnn",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。
如果一个文件有效,而另一个返回-1(在您的情况下无法打开文件),则99%的文件路径有问题:-)请仔细检查文件的路径。
如何获取文件名?
我怀疑其中一个有一个附加的尾随换行符,你真的试图打开".../something.birn"
而不是".../something.bir"
我建议您编写一个trim
函数(或两个:ltrim
和rtrim
),并在打开文件名之前对其进行处理。