在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)的页面。     

要回复问题请先登录注册