/**********************************
从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置
**************************************/
char *msstrtok(char *instr, char *outstr, char *delimiter)
{
char *tmpstr;
if(memcmp(instr, delimiter, strlen(instr))==0){
return(NULL);
}
if(instr==NULL || strlen(instr)==0){return(NULL);}
tmpstr=strstr(instr,delimiter);
if(tmpstr!=NULL){
memcpy(outstr, instr, strlen(instr)-strlen(tmpstr));
return(strstr(instr,delimiter)+strlen(delimiter));
}else{
memcpy(outstr, instr, strlen(instr));
return(NULL);
}
}
说起来很有意思,自认为对C语言理解得还是比较深刻的。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概继续学得不够全面啊!这里引用一段strtok用法:
char str[] = "now # is the time for all # good men to come to the # aid of their country";
char delims[] = "#";
char *result = NULL;
result = strtok( str, delims );
while( result != NULL ) {
printf( "result is \"%s\"\n", result );
result = strtok( NULL, delims );
}
The above code will display the following output:
result is "now " result is " is the time for all " result is " good men to come to the " result is " aid of their country"