IRC客户端发送消息不正确,C ++

时间:2011-02-05 20:39:07

标签: c++ sockets irc

发送邮件时出现问题。它们分成空格所在的单个消息。消息使用sprintf(message, "PRIVMSG %s :%s\n", irc_chan, buffer);组成。错误将如下所示(单个消息包含在"" s中)。我将输入一条消息"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 个答案:

答案 0 :(得分:3)

%s不包含空格。每个单词都将被单独捕获。

答案 1 :(得分:0)

这是来自scanf(3)手册页:

s Matches a sequence of non-white-space characters; 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::stringgetline()