在C语言中将结构传递给函数
我有一个结构:在C语言中将结构传递给函数,c,windows,winapi,visual-c++,file,C,Windows,Winapi,Visual C++,File,我有一个结构: PROCESSENTRY32 pe32; 我想把这个结构传递给一个函数。该函数将创建一个文件,并将结构中的数据写入该文件。函数的名称为takeinput()。我将结构传递给函数: errflag=takeinput(&pe32) 在takeinput(PROCESSENTRY32*pe31)中,我使用createfile()创建了一个文件D:\file.txt。现在我必须将日期从写入file.txt。我正在使用: WriteFile(
PROCESSENTRY32 pe32;
我想把这个结构传递给一个函数。该函数将创建一个文件,并将结构中的数据写入该文件。函数的名称为takeinput()。我将结构传递给函数:
errflag=takeinput(&pe32)
在takeinput(PROCESSENTRY32*pe31)中,我使用createfile()创建了一个文件D:\file.txt。现在我必须将日期从写入file.txt。我正在使用:
WriteFile(
hFile, // open file handle
DataBuffer, // start of data to write
dwBytesToWrite, // number of bytes to write
&dwBytesWritten, // number of bytes that were written
NULL); // no overlapped structure
这是我知道的。最后三个我知道。但我对数据缓冲参数感到困惑。在那里要通过什么?结构pe31中有许多变量。有人能帮我吗
如果有其他方法将结构的数据写入file.txt,请向我解释。提前谢谢 WriteFile函数签名为
BOOL WINAPI WriteFile(
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out_opt LPDWORD lpNumberOfBytesWritten,
__inout_opt LPOVERLAPPED lpOverlapped
);
DataBuffer是签名中的lpBuffer,lpBuffer是指向包含要写入文件或设备的数据的缓冲区的指针。您应该显式地将指向数据(PROCESSENTRY32 pe31)的指针强制转换为指向void((void)pe31)的指针,并将其传递给WriteFile。您是否阅读了有关WriteFile
函数的说明?,该说明可能有助于您了解它所使用的每个参数的用途及其含义
BOOL WINAPI WriteFile(
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out_opt LPDWORD lpNumberOfBytesWritten,
__inout_opt LPOVERLAPPED lpOverlapped
);
您说您对DataBuffer
参数感到困惑。MSDN解释说,这是:
指向包含要写入文件或设备的数据的缓冲区的指针
此缓冲区必须在写入操作期间保持有效。在写入操作完成之前,调用方不得使用此缓冲区
因此,本质上,DataBuffer
(lpBuffer
)参数是提供要写入文本文件的数据的地方
这里有一个关于如何打开和写入文件的完整示例。您应该能够按照代码来查看如何为您的特定案例编写代码。这是保存数据的缓冲区。您的电话是:
takeinput (PROCESSENTRY32* ppe32)
{
WriteFile(
hFile, // open file handle
(void*)ppe2, // pointer to buffer to write
sizeof(PROCESSENTRY32), // number of bytes to write
&dwBytesWritten, // this will contain number of bytes actually written
NULL); // no overlapped structure
// some other stuff
}
返回后,
dwbytesWrite
应等于sizeof(PROCESSENTRY32)
为什么文件名为file.txt,您想以二进制格式还是文本格式写入数据?