0064-wcstok.c (701B)
1 #include <assert.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <wchar.h> 5 6 /* 7 output: 8 testing 9 test1 10 one 11 two 12 three 13 four 14 test2 15 one 16 three 17 test3 18 one 19 done 20 end: 21 */ 22 23 void 24 test(char *msg, wchar_t *fmt) 25 { 26 wchar_t *s, *p, buff[50]; 27 28 puts(msg); 29 30 wcscpy(buff, fmt); 31 for (s = wcstok(buff, L"-+", &p); s; s = wcstok(NULL, L"+-", &p)) { 32 switch (*s) { 33 case L'1': 34 puts("one"); 35 break; 36 case L'2': 37 puts("two"); 38 break; 39 case L'3': 40 puts("three"); 41 break; 42 case L'4': 43 puts("four"); 44 break; 45 default: 46 puts("error"); 47 break; 48 } 49 } 50 } 51 52 int 53 main() 54 { 55 puts("testing"); 56 test("test1", L"-+1--2++3+-4"); 57 test("test2", L"1--+-+-+-3+-"); 58 test("test3", L"1"); 59 puts("done"); 60 return 0; 61 }