サーバーから受信したバイナリ データをバイナリ ファイルに書き込む必要があるため、次の関数を記述しました。
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;
}
私は2つの問題を抱えています:- 1) DATE::TIME::DATA IS::DATAのようなバイナリデータを書かなければなりません。私は次のようにすることができません:-
sprintf(buf_buf,"%s::%s::DATA IS::", szDate, szTime,buf);
sprintf は、「buf」でヌル文字に遭遇すると終了します。サーバーからは常に 135 バイトのデータがありますが、17 番目のバイトまたは他のバイトに null 文字がある場合があるため、sprintf はそこで文字列を終了し、完全なバイナリ データを書き込みません。私の2番目の問題は、2回目のWriteToDataFile1()関数の場合でも、2行目に書き込む必要があるfwriteのデータが1行であることです。誰でも解決策を教えてもらえますか。