为什么用指针不行(编译没问题,运行出错),用数组名就可以?
//为可行的方案
#include <stdio.h> #include <string.h> int main(void) { char * string = "hello,how,are,you?fine,thanks!"; char * token = "?"; // char string[] = "hello,how,are,you?fine,thanks!"; // char token[] = ",?!"; char * result = NULL; // char *a = string; // char *b = token; result = strtok(string, token) // result = strtok(a, b); while(result != NULL){ puts(result); result = strtok(NULL, token); // result = strtok(NULL, b); } return 0; }
解决方案:10分
指针也可以的,但是你要给它动态分配内存。
解决方案:30分
char *string 与char string[] 的区别
当对这两者字符串处理时,前者字符串本身并不会变,变的只是指针,只有后者才可以改变字符串内容
而strtok()函数会改变原字符串,
所以用前者错误,后者正确