CreateFile是打开文件句炳,然后怎么处理呀?

解决方案 »

  1.   

    CStdioFile File;
    if(File.Open(....))
    {
      CString csLine;
      while(File.ReadString(csLine))
      {
         //Do something with csLine
      }
      File.Close();
    }
      

  2.   

    对不起,没看清题目不过,你可以参考CStdioFile::ReadString()函数源码。
      

  3.   

    我主要是不明白CreateFile WriteFile这一套api的机制,而且我用的是runtime库,怎么引用mfc的CStdioFile 类呢?
      

  4.   

    char cName[100]="\\……";//路径
    DWORD len,dwread;
    HANDLE hf = CreateFile(cName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
    len = GetFileSize (hf, NULL);
    char* c=new char[len];
    ReadFile(hf,bEn,len, &dwread, NULL);//读
    //WriteFile(hf,c,len, &dwread, NULL);//写
    CloseHandle(hf);
    delete[]c;
      

  5.   

    CreateFile,然后ReadFile,WriteFileReadFile,WriteFile将文件看作二进制的字节流,不存在行的概念。如果要一行一行的读,就是读直到遇到一个换行符。
    写,只要把换行符也写进去就行了。
      

  6.   

    看错题了:char t[2];
    char cName[100]="\\……";//路径
    DWORD len,dwread,dwseek=0;……HANDLE hf = CreateFile(cName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
    len = GetFileSize (hf, NULL);
    char* c=new char[len];c[0]='\0';
    SetFilePointer(hf,dwseek,NULL,FILE_BEGIN);
    for(DWORD i=0;i<len;i++){
      ReadFile(hf,c,2, &dwread, NULL);
      if(t[0]=='\r'&&t[1]=='\n')
         break;
      lstrcat(c,t);
    }
    dwseek=SetFilePointer(hf,0,NULL,FILE_CURRENT);//记下当前读写位置;CloseHandle(hf);
    delete[]c;
      

  7.   

    char* ReadLineFromFile( FILE* pFile )
    {
    if( pFile == NULL )
    return NULL; int nPositionStay = ftell( pFile );
    char cCurChar = fgetc( pFile );
    for( ; feof( pFile ) == 0 && cCurChar != '\n' ; )
    {
    cCurChar = fgetc( pFile );
    }
    fseek( pFile , -2 ,SEEK_CUR ); int nPositionMove = ftell( pFile );

    char* pRtnStr = (char*)malloc( nPositionMove -nPositionStay + sizeof( '\0' ) );
    if( pRtnStr == NULL )
    return NULL; // back to start point
    fseek( pFile , nPositionStay  , SEEK_SET ); int nRead = fread( (void*)pRtnStr , sizeof(char) , nPositionMove -nPositionStay  , pFile );
    if( nRead != nPositionMove - nPositionStay )
    {
    free( pRtnStr );
    return NULL;
    } pRtnStr[nPositionMove - nPositionStay] = '\0'; cCurChar = fgetc( pFile );
    for( ; feof( pFile ) == 0 && cCurChar == '\n' ; )
    {
    cCurChar = fgetc( pFile );
    }
    fseek( pFile , -1 ,SEEK_CUR );

    return pRtnStr;
    }