当使用char*str作为第一个参数(不是分隔符字符串)时,strtok将无法正常工作.
它是否与在该表示法中分配字符串的区域有关?(据我所知,这是一个只读区域).
提前致谢
例:
//char* str ="- This, a sample string."; // <---doesn't work
char str[] ="- This, a sample string."; // <---works
char delims[] = " ";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,delims);
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, delims);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
小智 6
在第一种情况下,您将字符串文字传递给strtok().由于strtok()修改了此字符串,并且由于字符串文字无法合法修改,因此最终会出现未定义的行为.在第二种情况下,编译器将字符串复制到数组中.数组内容可以修改,所以这段代码没问题.
归档时间: |
|
查看次数: |
2343 次 |
最近记录: |