strtok函数的使用注意事项
1. 函数原型及其基本应用
char *strtok(char str[], const char *delim);
其中str是要分解的字符串,delim是字符串中用来分解的字符,该函数返回分解后的字符串的起始位置指针。之所以是分解,就是说并没有生成新的字符串,只是在源字符串上面做了一些手脚,使得源字符串发生了变化,所以一定要注意,源字符串发生了变化!!!
// 例1 #include
void main() { char s[] = "192.168.0.26"; char *delim = "."; char *p; printf("%s ", strtok(s, delim)); while((p = strtok(NULL, delim))) printf("%s ", p); printf("\n"); }
从例1中就可以看出strtok函数的基本使用方法,输入一个字符串数组,然后就可以将其按照一定的分隔符(例1中为”.”)将一个长的字符串分割成一个个短的字符串。这里需要注意的是,在对一个长字符串分割的时候,第一次调用时,strtok函数的第一个参数传入要分割的字符串,而第二次以及后面再次调用该函数的时候,strtok函数的第一个参数应该传入NULL,这是因为在strtok第一个参数为NULL的时候,该函数默认使用上一次未分割完的字符串的未分割的起始位置作为本次分割的起始位置,直到分割结束为止。
2. 使用注意事项1
3. 使用注意事项2
// 例2 #include
void main() { char *s = "192.168.0.26"; // 与例1的唯一区别,字符串数组变成了字符串常量指针!!! char *delim = "."; char *p; printf("%s ", strtok(s, delim)); while((p = strtok(NULL, delim))) printf("%s ", p); printf("\n"); }
所以如果输入是字符串常量指针的时候,是不能直接传递给strtok函数的第一个参数的,大家可以将这个字符串常量指针中的内容逐一拷贝到一个字符串数组中,再进行分解,不过这种方法效率比较低,所以并不建议这样使用,如果实在无法使用strtok函数进行字符串分解,那么可以使用其他的函数进行类似分解,比如使用strstr函数、strchr函数等。
4. 使用注意事项3
5. 使用注意事项4
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218935.html原文链接:https://javaforall.net
