2011-06-23 11 views
-1

バイナリモードで読み込むファイルを開こうとすると問題が発生します。それがうまく働いてpFileName=/mnt/jffs2/bir/1234.bir場合はここでバイナリモード、C言語でファイルからデータを読み取ることができません

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/11772213A7894568.birファイルからデータを読み取ることができない場合。 -1を返します。

+1

両方のファイルを読む権限がありますか? – Heisenbug

答えて

0

1つのファイルが動作し、-1が返された場合(ファイルはあなたのケースで開くことはできません)、ファイルパスに99%の問題があります:-) ファイルへのパスを再確認してください。

0

どのようにファイル名を取得していますか?

は、私はそれらのいずれかが付属末尾に改行があると疑われる、あなたは本当に私はあなたがtrim関数を書く示唆".../something.bir"

ではなく".../something.bir\n"を開こう(または2:ltrimrtrim)と、それを開く前に、ファイル名を処理します。

関連する問題