//char *buf 的內容會被改變 !!!!!!!!!!!
void testf1(char* buf,char* ptr[])
{
int in=0 ;
char *token ;
char *rest = buf ;
while((token=strtok_r(rest,"|",&rest))!=NULL) {
ptr[in] = token ;
in++ ;
} //while
}
void *thread1(void *param)
{
pthread_detach(pthread_self());
char* ptr[128]={0} ;
char data[INFO_MAX_SZ]={0} ;
while( 1 ){
strcpy(data,"111|222|33333|44|5|6666666|7|8|9999999999999|0|") ;
testf1(data,ptr) ;
assert( strcmp(ptr[0],"111")==0 ) ;
assert( strcmp(ptr[1],"222")==0 ) ;
assert( strcmp(ptr[2],"33333")==0 ) ;
assert( strcmp(ptr[3],"44")==0 ) ;
assert( strcmp(ptr[4],"5")==0 ) ;
assert( strcmp(ptr[5],"6666666")==0 ) ;
assert( strcmp(ptr[6],"7")==0 ) ;
assert( strcmp(ptr[7],"8")==0 ) ;
assert( strcmp(ptr[8],"9999999999999")==0 ) ;
assert( strcmp(ptr[9],"0")==0 ) ;
printf("(%p)(%p)(%p)(%p)(%p)(%p)\n",ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]) ;
break ;
}//while
return 0 ;
}
void *thread2(void *param)
{
pthread_detach(pthread_self());
char* ptr[128]={0} ;
char data[INFO_MAX_SZ]={0} ;
while( 1 ){
strcpy(data,"aaa|bbb|ccccc|dd|e|fffffff|g|h|iiiiiiiiiiiii|k|") ;
testf1(data,ptr) ;
assert( strcmp(ptr[0],"aaa")==0 ) ;
assert( strcmp(ptr[1],"bbb")==0 ) ;
assert( strcmp(ptr[2],"ccccc")==0 ) ;
assert( strcmp(ptr[3],"dd")==0 ) ;
assert( strcmp(ptr[4],"e")==0 ) ;
assert( strcmp(ptr[5],"fffffff")==0 ) ;
assert( strcmp(ptr[6],"g")==0 ) ;
assert( strcmp(ptr[7],"h")==0 ) ;
assert( strcmp(ptr[8],"iiiiiiiiiiiii")==0 ) ;
assert( strcmp(ptr[9],"k")==0 ) ;
printf("(%p)(%p)(%p)(%p)(%p)(%p)\n",ptr[0],ptr[1],ptr[2],ptr[3],ptr[4],ptr[5]) ;
break ;
}//while
return 0 ;
}
int main()
{
pthread_t tid1 ;
pthread_create(&tid1 , NULL, thread1, (void*)(long)3);
pthread_create(&tid1 , NULL, thread2, (void*)(long)6);
while( 1 ){
sleep( 10 ) ;
}
return 0;
}
g++ --std=c++11 -Wall -Werror test1.cpp -pthread -O1 -o test1.exe
留言列表