9月 10, 2009

strtok 字串切割函式

UPDATE 9/12:
範例中 gets 宜用 fgets 取代,避免 Buffer Overflow。

將使用者輸入的 String 切割成單一 token 可用 strtok() 這個函式。定義如下:
char * strtok ( char * str, const char * delimiters );
// delimiters 表示以該字元為區隔。
程式使用範例:
char buf[32], token[10][32] , *str;
int idx=0;
gets (buf); //gets 允許輸入的字串帶有空白 (重點)
str = strtok(buf," ");
strcpy (token[0], str);
while ( str != NULL )
{
str = strtok(NULL," "); //此處用 NULL (技巧)
if (str!=NULL)
{
idx++;
strcpy(token[idx], str);
}
}
若輸入:「This is my Blog」,則得到結果:
token[0] = This
token[1] = is
token[2] = my
token[3] = Blog

沒有留言:

張貼留言