看板 C_and_CPP 關於我們 聯絡資訊
你可以試一下這個土砲strtok, 不過delimiter只吃一個字元 #include <stdio.h> char *strtoken(char *s, int delim, int escstart, int escend) { static char *ss; static char *nullpos; static int eos = 1; int eot = 1; if (s) { ss = s; nullpos = s; eos = 0; } else if (!eos) ss = ++nullpos; else return NULL; for (; ; nullpos++) { if (*nullpos == escstart) eot = 0; else if (*nullpos == escend) eot = 1; if (eot && *nullpos == delim) { *nullpos = '\0'; return ss; } else if (*nullpos == '\0') { eos = 1; return ss; } } } 例: char s[] = "DotA Allstars [6.58c is out!]"; char *ss; ss = strtoken(s, ' ', '[', ']'); while (ss) { printf("%s\n", ss); ss = strtoken(NULL, ' ', '[', ']'); } ※ 引述《wait0211 (我只是過客)》之銘言: : 又有新的問題 XD : -> s 55 : address 16進制碼 ASCII : 000050 61 62 63 30 30 30 30 30 30 30 30 abc000000 : 000060 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 00000000000000 : 000070 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 00000000000000 : 輸入指令像是 f 61 62 63 (搜尋功能) : 應該要輸出: : 61 62 63 at 55 : 如果輸入 f 'abc' : 會輸出: : abc at 55 : 現在的問題是,我不知道該怎麼讓它去判斷有沒有加單引號, : 沒加就找16進制,有加就找ASCII : 我現在只會用strtok分開 f 和 欲搜尋資料 然後去搜尋, : 找得到就印出它在第幾行,沒辦法精確到第幾個 XD : 而且還不能搜尋有空白的字串,因為會被strtok切開.. 囧 : 搜尋 16進制碼的功能也出不來.. : 還是說乾脆就不要用strtok啊? XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.226.216