クライアントで sprintf を使用してバッファを保持する char[] を出力しようとしています。最後の文字は「\0」です。これは私のサーバーコードです:
char buffer[MAXDATASIZE];
char res[MAXDATASIZE];
memset(buffer, '\0', MAXDATASIZE);
memset(res, '\0', sizeof(res));
if ((numbytes=recv(new_fd, buffer, sizeof(buffer), 0)) == -1) {
perror("recv");
exit(true);
}
buffer[numbytes] = '\0'; // add null terminator
sprintf(res, "test \"%s\" not found amongst the batting figures.\n Please check your spelling and try again.", buffer);
if (send(new_fd, res, sizeof(res), 0) == -1){
perror("send");
}
これは次のように表示されます: test "term" が出力され、残りの res[] は表示されません (つまり、"not found within...")。これを修正するにはどうすればよいですか?
ありがとう。