在win32 api中的文本文件末尾附加文本

Ays*_*yse 2 c windows winapi text-files createfile

我正在尝试打开一个文本文件,将一些数据写入其中,然后在已经写入文件的数据末尾追加一些数据,但这不起作用.任何人都可以帮我解决我的代码问题吗? 代码链:

char buffer[]="Write this text to file";
DWORD dwWritten; // number of bytes written to file
HANDLE hFile;  

hFile=CreateFile("file.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if(hFile==INVALID_HANDLE_VALUE)
  {
    MessageBox(0,"Could not create/open a file","Error",16);
    return 0;
  }
WriteFile(hFile,buffer,sizeof(buffer),&dwWritten,0);

DWORD dwPtr = SetFilePointer( hFile, dwWritten, NULL, FILE_END); //set pointer position to end file

WriteFile(hFile,buffer,sizeof(buffer),&dwPtr,NULL); 

CloseHandle(hFile);
Run Code Online (Sandbox Code Playgroud)

sin*_*ngh 5

如果要将数据附加到文件,可以使用FILE_APPEND_DATA标志将其传递给CreateFile方法.这可以通过使用包含FILE_APPEND_DATA的FILE_GENERIC_WRITE标志来完成

hFile=CreateFile("file.txt",FILE_GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
Run Code Online (Sandbox Code Playgroud)

当您写入文件时,文件指针移动也会移动并指向当前位置.如果要写入文件末尾,可以使用

SetFilePointer( hFile, 0, NULL, FILE_END);
Run Code Online (Sandbox Code Playgroud)

并使用WriteFile作为

WriteFile(hFile,buffer,strlen(buffer),&dwWritten,NULL); 
Run Code Online (Sandbox Code Playgroud)