IRC клиент отправляет сообщения неправильно, C ++ - PullRequest
0 голосов
/ 05 февраля 2011

Проблема возникает при отправке сообщений.Они делятся на отдельные сообщения, где пробелы.Сообщения составляются с использованием sprintf(message, "PRIVMSG %s :%s\n", irc_chan, buffer); Ошибка будет выглядеть следующим образом (отдельные сообщения содержатся в "" с).Я введу сообщение "Hi there".Он выдаст "Hi" "there".буфер является char[1024].Любые идеи, пожалуйста, дайте мне знать.

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

scanf("%s", buffer);
sprintf(message, "PRIVMSG %s :%s", irc_chan, buffer);
send(IRCSocket.iSocket, message, strlen(message), 0);

РЕДАКТИРОВАТЬ: Я решил это с помощью Computer Guru.Я использовал scanf (), я должен был использовать cin.getline ();Спасибо за помощь, очень признателен.

Ответы [ 2 ]

3 голосов
/ 05 февраля 2011

%s не включает пробелы. Каждое слово будет записано отдельно.

0 голосов
/ 05 февраля 2011

Вот из scanf(3) справочной страницы:

<b>s</b> Matches a sequence of <b>non-white-space characters</b>; the next pointer must be a pointer to char, and the array must be large enough to accept all the sequence and the terminating NUL character. The input string stops at white space or at the maximum field width, whichever occurs first.

Также слишком легко переполнить конец буфера таким образом.Используйте взамен fgets(3).В C ++ (поскольку это ваш тег) вы можете использовать std::string и getline().

...