忽略点十六:strtok()的使用
在ACM中,常常使用字符串函数诸如:strlen求字符串长度,strcpy字符串复制,strcmp字符串比较,strcat字符串追加等等,但忽略了一个特别重要的函数——strtok()
char* strtok(char* str, const char* delimiters);
它用于将字符串str
用分隔符delimiters
分为更短的字符串。delimiters
是含多个字符的字符串,其中每个字符都是一个独立的分隔符。如\n\t
中\n
和\t
都是分隔符。
需要注意!!strtok
函数会改变源字符串str
,返回值指向第一个由非分隔符字符的指针的分割片段;之后每次调用,都要把NULL
作为第一个参数,如果调用成功就会返回下一个分割片段,如果已经到达str
的末尾则会返回NULL
具体使用如下:
char s[55] = "hello,My name is Ivan,I'm fifteen years|old";
char s1[5] = ", |";
char *p = strtok(s, s1); //利用s1中分隔符将s分隔开
printf("%s\n", s); //输出hello
printf("%ld\n", strlen(s)); //输出5,代表s只剩分隔符分隔后的第一块
while (p != NULL) {
printf("%s\n", p);
//循环输出每一块
//分别为hello,My,name,is,Ivan,I'm,fifteen,years,old
p = strtok(NULL, s1); //循环的使用方法
}
如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢!