fwrite вроде работает, memcpy не работает - PullRequest
1 голос
/ 20 июня 2011

Я не уверен, что происходит.Нечто связанное с буферизацией.Код ...

if (data->inbound){
//fwrite(buf, res, 1, stdout); //data->inbound);
char tmp[SOAP_BUFLEN+1];
memset(tmp,0,SOAP_BUFLEN+1);
if(len>0) {
    memcpy(tmp, buf, minim(SOAP_BUFLEN,len) );
    tmp[minim(SOAP_BUFLEN,len)] = '\0'; 
    printf("%s\n",tmp);
    //printf("-----------------\n");
}

когда я использую fwrite, я вижу вывод без проблем.Когда я использую memcpy, я вижу повторяющиеся записи в выводе?Нужно ли что-нибудь промывать?

В конце оператора printf я вижу часть tmp, которую нужно повторить.

1 Ответ

4 голосов
/ 20 июня 2011

Вы используете разные значения длины для fwrite и memcpy. Основываясь на коде (и закомментированном коде) здесь, memcpy использует меньшее из len или SOAP_BUFLEN. fwrite использует res * 1. Так что я бы поставил len != res.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...