C++builder 写入txt不被覆盖并实现换行,该如何解决

C++builder 写入txt不被覆盖并实现换行
如何实现:C++builder 写入txt不被覆盖并实现换行,现在的程序每次写入都会覆盖以前内容,加上换行符也不行。
------解决方案--------------------
打开文件后,把文件指针移到最后,写文件时如果需换行,加写"\r\n".
void __fastcall TForm1::logFile(char* p)
{
   char logName[1024];
   SYSTEMTIME et;
   HANDLE hLog;
   GetLocalTime(&et);
   lstrcpy(logName,"d:\\123log.txt");

   hLog=CreateFile(logName,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS ,FILE_ATTRIBUTE_NORMAL ,NULL);
   if (hLog==INVALID_HANDLE_VALUE)
      return;
   if(SetFilePointer(hLog,0,0,FILE_END)>1024*1024*5-1)
   {
      CloseHandle(hLog);
      char* log2Name=new char[MAX_PATH];
      lstrcpy(log2Name,"z:\\123log1.txt");
      log2Name[0]=logName[0];
      CopyFile(logName,log2Name,false);
      delete[] log2Name;
      hLog=CreateFile(logName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL);
   }
   if(p[0]=='\r' && p[1]=='\n')
      wsprintf(logName,"\r\n%04d-%02d-%02d %02d:%02d:%02d.%03d %s\r\n",et.wYear,et.wMonth,et.wDay,et.wHour,et.wMinute,et.wSecond,et.wMilliseconds,p+2);
   else
      wsprintf(logName,"%04d-%02d-%02d %02d:%02d:%02d.%03d %s\r\n",et.wYear,et.wMonth,et.wDay,et.wHour,et.wMinute,et.wSecond,et.wMilliseconds,p);
   unsigned long retWriteByte;
   WriteFile(hLog,logName,lstrlen(logName),&retWriteByte,NULL);
   CloseHandle(hLog);
}
//---------------------------------------------------------------------------


------解决方案--------------------
这和 打开文件的 模式 有关
如果 打开 的方法 为 truncate  
那肯定是覆盖
应该为 append
------解决方案--------------------
给个简单的例子:使用TStringList

TStringList  *slt=new  TStringList ;
slt->LoadFromFile("c:\\aa.txt");

slt->Add("你的内容");//加入你的内容
。。。
slt->SaveToFile("c:\\aa.txt");
------解决方案--------------------
引用:
这和 打开文件的 模式 有关
如果 打开 的方法 为 truncate  
那肯定是覆盖
应该为 append


+1

C++builder 写入txt不被覆盖并实现换行,该如何解决