/* 以下为我们的手机收到的短信的格式,请利用指针数组与strtok函数对其解析 char msg_src[] = {"+CMGR:REC UNREAD,+8613466630259,98/10/01,18:22:11+00,ABCdefGHI"}; 解析结果: 日期:98 / 10 / 01 时间:18 : 22 : 11 发件人:13466630259 内容:ABCdefGHI 参考以下的函数名字以及参数,完成相应的要求 int msg_deal(char *msg_src, char *msg_done[], char *str) 参数1:待切割字符串的首地址 参数2:指针数组:存放切割完字符串的首地址 参数3:切割字符 返回值:切割的字符串总数量 */ #include #include #include int msg_deal(char *msg_src, char *msg_done[], char *str) { int cnt = 0; char *tmp = strtok(msg_src, str); while (tmp != NULL) { if (cnt == 1) // 如果是发件人,去掉前面的 +86 { if (strncmp(tmp, "+86", 3) == 0) // 如果前三位是 +86 tmp += 3; // +86 的长度为 3, tmp 指针向后移动 3 位 } if (cnt == 3) // 处理时间字符串 { int len = strlen(tmp); // 获取字符串长度 if (len >= 3 && strcmp(tmp + len - 3, "+00") == 0) // 如果末尾是 +00 且字符串长度大于等于 3 tmp[len - 3] = '\0'; // 去掉末尾的 +00,即将 +00 替换为 \0 } msg_done[cnt++] = tmp; // 将切割后的字符串存入指针数组 tmp = strtok(NULL, str); // 继续切割 } return cnt; // 返回切割的字符串总数量 } int main() { char msg_src[] = {"+CMGR:REC UNREAD,+8613466630259,98/10/01,18:22:11+00,ABCdefGHI"}; char *msg_done[5]; // 5 个字符串 char str[] = ","; // 以逗号为切割字符 int cnt = msg_deal(msg_src, msg_done, str); printf("日期:%s\n", msg_done[2]); printf("时间:%s\n", msg_done[3]); printf("发件人:%s\n", msg_done[1]); printf("内容:%s\n", msg_done[4]); return 0; }