qfedu-c-level/day11/homework/h9.c

64 lines
2.1 KiB
C
Raw Permalink Normal View History

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