我们知道 函数strtok可以对字符串分割, 但有时会忽略它对它接受的第一个参数的要求。
函数原型是 char *strtok (char *, const char * )。虽然第一个参数是字符型指针,但也不要传递给它字符串常量。 因为strtok要对第一个参数修改,而字符串常量存放在常量区。比如,
char *p = "Today is a nice day";
strtok ( p, " “ ); /* 按照空格分隔 */
原来我这样写,编译后执行, 就会出现 无法执行的问题, 然后调试一下, 报错:Unhandled exception in *.exe: 0xC0000005: Access Violation
后来,我改成 char p [] = "Today is a nice day". 然后就好了。 因为此时p是存放在堆栈中,允许修改。