如何解决在C中解析IRC PRIVMSG
| 我对C还是很陌生(我更习惯C ++),并且正在尝试创建IRC Bot。我目前正在努力寻找正确的字符串解析函数来解析此行::nick!~username@server PRIVMSG #channel :message (Could contain the word PRIVMSG)
因此,我问是否有人可以向我展示将这一行分解为哪些功能?
缺口
用户名
服务器
渠道
信息
谢谢你的帮助!
解决方法
我可能会使用sscanf。此一般顺序上的某些内容似乎是一个合理的起点:
char nick[32],user[32],server[32],channel[32],body[256];
sscanf(buffer,\":%31[^!]!~%31[^@]@%31s PRIVMSG #%31s :%255[^\\n]\",nick,user,server,channel,body);
, 考虑到所有这些都在您可以写入的char []缓冲区中(即内容将被覆盖),您可以执行以下操作:
char *nick,*username,*server,*command,*channel,*message;
nick = strtok(buffer+1,\"!\");
username = strtok(NULL,\"@\");
server = strtok(NULL,\" \");
command = strtok(NULL,\" \");
channel = strtok(NULL,\" \");
message = strtok(NULL,\"\");
您需要在上面的代码中添加一些错误检查,因为如果找不到更多标记,对strtok()的任何调用都可能返回NULL。您还可以使用一些更复杂的解析或sscanf()。
阅读有关strtok(3)和sscanf(3)的页面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。