我好像還沒有真正用過 strtok,一開始還有點慌,擔心東擔心西的,用了才知道還滿順的,順便筆記一下,另外,若是要在 vistual studio 系列上,可以把 strtok_r 直接 define 成 strtok_s 就可以,細節請參考 msdn 。
程式碼:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main( int argc, char *argv[])
{
char *getTag, *tokenBrk, *data;
char *tag[100];
int cnt=0;
data = NULL;
if( argc > 1 )
data = argv[1];
else
data = NULL;
for ( getTag = strtok_r( data , ", " , &tokenBrk ) ; getTag ; getTag = strtok_r( NULL , ", " , &tokenBrk ) )
{
tag[cnt++] = getTag;
//printf("[%s]\n" , getTag );
}
printf("[Src:%s]\n" , data );
while( cnt-- > 0 )
printf("[%s]\n" , tag[cnt] );
return 0;
}
結果:
> ./a.out " 1 2 , 3,45 ,678 , 90 , ,"
[Src: 1]
[90]
[678]
[45]
[3]
[2]
[1]
原先一直很好奇為啥 getTag 取出來的字串有 '\0' 結尾,後來就把原字串印出來就知道了,因為那些 ',' 或 ' ' 都被取代掉囉!
沒有留言:
張貼留言