使用sscanf()拆分AT命令字符串
我在C中使用使用sscanf()拆分AT命令字符串,c,scanf,C,Scanf,我在C中使用sscanf()拆分字符串时遇到问题 我有 char sms[]="AT+CMGR=7+CMGR: \"REC UNREAD\",\"+213552830677\",\"\",\"14/11/29,21:20:36+04\"123456Cn50555202555"; 我想得到 char number[15] = "+213552830677"; char code[6] = "123456 "; char cmd[2] = "Cn"; char arg[20] = "5055520
sscanf()
拆分字符串时遇到问题
我有
char sms[]="AT+CMGR=7+CMGR: \"REC UNREAD\",\"+213552830677\",\"\",\"14/11/29,21:20:36+04\"123456Cn50555202555";
我想得到
char number[15] = "+213552830677";
char code[6] = "123456 ";
char cmd[2] = "Cn";
char arg[20] = "50555202555";
我使用此代码进行拆分并打印结果:
sscanf(sms,"AT+CMGR=8+CMGR: \"REC UNREAD\",\"+%12s\",\"\",\"14/11/29,21:20:36+04\"%6s%2s%s",tmp ,number ,code ,cmd ,arg);
printf("Temp: %s\r\nNumber: %s\r\nCode: %s\r\nCommand: %s\r\nArgument: %s\r\n",tmp ,number ,code ,cmd ,arg);
- 在
格式中,您忘记了参数sscanf
的转换规范;因此,输入被分配到错误的对象tmp
和char-code[6]
对于终止的空字符来说缺少一个空格,因此可能会覆盖其他对象char-cmd[2]
char code[6+1];
char cmd[2+1];
char tmp[1+1];
sscanf(sms, "AT+CMGR=%1s+CMGR: \"REC UNREAD\",\"+%12s"
"\",\"\",\"14/11/29,21:20:36+04\"%6s%2s%s",
tmp, number, code, cmd, arg);
它可以工作。那么,你为什么不显示正则表达式呢?sscanf(sms,“AT+CMGR=8+CMGR:\“REC UNREAD\”、\“+%12s\”、\“\”、\“\”、\“14/11/29,21:20:36+04\%6s%2s%s”、tmp、number、code、cmd、arg);printf(“临时:%s\r\n编号:%s\r\n代码:%s\r\n命令:%s\r\n附件:%s\r\n”,tmp,编号,代码,命令,参数);那绝对不是正则表达式您应该将其编辑到问题中,删除对REs的提及,并让我们知道
sscanf()
解决方案的问题是什么。可以为我编辑它吗当然,但我当然不知道问题出在哪里。这是一个问题中最重要的部分,你没有告诉我们。。。