/*
    以下为我们的手机收到的短信的格式，请利用指针数组与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 <stdio.h>
#include <stdlib.h>
#include <string.h>

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;
}
