我必须将我从服务器接收的二进制数据写入二进制文件,所以我编写了以下函数:-
int WriteToDataFile1(char buf[])
{
char szDate[12];
char szTime[12];
char buf_buff[2500];
_strdate( szDate );
_strtime( szTime );
memset(buf_buf, 0, sizeof(buf_buff));
FILE* log = fopen(BufferFilePath11, "a+");
if (log == NULL)
return -1;
fwrite(buf,1,135,log); //working fine
fclose(log);
return 0;
}
我遇到了两个问题:- 1)我必须编写像 DATE::TIME::DATA IS::DATA 这样的二进制数据。我无法执行以下操作:-
sprintf(buf_buf,"%s::%s::DATA IS::", szDate, szTime,buf);
因为 sprintf 将在遇到“buf”中的空字符时终止。服务器总是有 135 字节的数据,但有时第 17 字节或其他字节有空字符,因此 sprintf 将终止字符串,我不会写入完整的二进制数据。我的第二个问题是 fwrite 我的数据是一行,即使第二次 WriteToDataFile1() 函数,而我应该写在第二行我可以告诉解决方案。