我只想修改文件的第一行(比如.txt文件),其他行和原来一样。请问如何实现,给一个简单的代码,谢谢!

解决方案 »

  1.   

    判断一行的标准是:0x0D、0x0A!!读入内存后首先从头找这两个标志,修改第一个以前的内容。
      

  2.   

    例子如下:
    HANDLE hFile = NULL;
    HANDLE hFileMap = NULL;
    PVOID pvFile = NULL; hFile = CreateFile(m_pPrintFile,
    GENERIC_WRITE|GENERIC_READ,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);
    if(hFile == INVALID_HANDLE_VALUE)
    continue;
    DWORD dwFileSize = GetFileSize(hFile,NULL); 
    hFileMap = CreateFileMapping(hFile,
    NULL,
    PAGE_READWRITE,
    0,dwFileSize,NULL);
    if(hFileMap == NULL)
    {
    if(hFile != NULL)
    {
    CloseHandle(hFile);
    hFile = NULL;
    }
    continue;
    }
    pvFile = MapViewOfFile(hFileMap,
    FILE_MAP_WRITE | FILE_MAP_READ,
    0,0,0);
    if(pvFile == NULL)
    {
    CloseHandle(hFileMap);
    hFileMap = NULL;
    CloseHandle(hFile);
    hFile = NULL;
    continue;
    }

    PSTR pchBuf = (PSTR)pvFile;
    pchBuf[dwFileSize / sizeof(CHAR)] = 0;你改pchBuf就改了你的文件了
      

  3.   

    用C库的方法:#include <stdio.h>
    #define MAXCHAR 200
    int main()
    {
      char newLine[]="New line\n";
      FILE* fp1;
      FILE* fp2;
      fp1=fopen("demo.txt","r");
      if(fp1==NULL){ printf("\nCannot open file for read");return 1;}
      fp2=fopen("newfile.txt","w");
      if(fp2==NULL){printf("\ncannot open file for write");return 1;}
      char ss[MAXCHAR];
      fgets(ss,MAXCHAR-1,fp1);
      fprintf(fp2,"%s",newLine);
      char *p;
      for(;;)
      {
        p=fgets(ss,MAXCHAR-1,fp1);
        if(p==NULL) break;
        fprintf(fp2,"%s",p);
      }
      fclose(fp1);
      fclose(fp2);
      return 0;
    }