我在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] = "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);
答案 0 :(得分:0)
sscanf
格式忘记了参数tmp
的转换规范;因此,输入被分配给错误的对象。char code[6]
和char cmd[2]
是一个空格,用于终止空字符,因此可能会覆盖其他对象。纠正这些错误后,e。克。
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);
它有效。