微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中解析IRC PRIVMSG

如何解决在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 举报,一经查实,本站将立刻删除。