1 wchar_t * matchEnd(wchar_t *text)
2 {
3 while(*text != (wchar_t)' ' && *text++ != '\0');
4 return text;
5 }
6
7 wchar_t * matchValue(wchar_t *text, wchar_t **end)
8 {
9 do {
10 if (*text != (wchar_t)' ') {
11 *end = matchEnd(text);
12 return text;
13 }
14 } while (*text++ != '\0');
15 return NULL;
16 }
17
18 wchar_t * matchKey(wchar_t *text)
19 {
20 wchar_t *end = NULL;
21 switch (*text)
22 {
23 case 'd': /* 接收消息反馈的应用程序 */
24 case 'D':{
25 wchar_t *value = matchValue(text+1, &end);
26 if (value != NULL){
27 memcpy(g_DeskWndName,value,end-value);
28 g_DeskWndName[end-value + 1] = '\0';
29 }
30 }
31 break;
32 case 'p': /* 视频文件存放的文件夹 */
33 case 'P':{
34 wchar_t *value = matchValue(text+1, &end);
35 if (value != NULL){
36 memcpy(g_RecordDirPath,value,end-value);
37 g_RecordDirPath[end-value + 1] = '\0';
38 }
39 }
40 break;
41 default:
42 break;
43 }
44 return end;
45 }
46
47 void matchSet(wchar_t *text)
48 {
49 wchar_t *ret = NULL;
50 do {
51 if (*text == (wchar_t)'-') {
52 ret = matchKey(text+1);
53 if (ret != NULL)
54 text = ret;
55 }
56 } while (*text++ != (wchar_t)'\0');
57 }
wchar_t g_DeskWndName[128] = _T("PrisonSyncDemo");
wchar_t g_RecordDirPath[255] = _T("D:\\NetworkRecord");
int main(int argc, _TCHAR* argv[])
{
wchar_t text[] = {L" -d PrisonTalk -p d:\\\\TalkRecord"};
matchSet(text);
}