2020年3月16日 星期一

[C] 讀寫存取.txt.bin

fopen
不採用二進制方式打開,fopen(filename, "r"),只要文件中有一字節為1A,就會停止讀取.如果用fopen(filename,"rb")就不會出現此問題.

rb是只讀取二進位文件:
r:read, b:binary

fseek
很重要,有時候讀不到長度會資料是這部分設定錯誤,意思是游標的位置.



#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
 FILE *pFile;
 int wLength;
 char uBuffer[256];

 pFile = fopen("test.txt", "rb"); //file name, mode
  
 /*Open failure*/
 if(pFile==NULL)
 {
  printf("[open failure\n");   
 }
 /*Open successful*/
  else
 {
  printf( "[open sucessful]\n" );
  
  /*Get length*/
  fseek(pFile, 0, SEEK_END);
  wLength = ftell(pFile);
  printf("\nGet length: %X\n", wLength);  
  
  /*Get data*/
  wLength=0;  
  fseek(pFile, 0, SEEK_SET);
  while(!feof(pFile))
      { 
       fread(&uBuffer[wLength], 1, 1, pFile);
   printf("\nData: %02X", uBuffer[wLength]);  
   wLength++;
  }
 }
 
 printf("\n\n");  
 system("PAUSE");
     return 0;
}




fopen及讀寫權限


沒有留言:

張貼留言