我用C编写了代码,用于使用strtok()
函数将示例字符串拆分为令牌。我似乎遵循了书中的所有内容,但我的CLion编译器不打印单个字符串令牌,并使用此代码Process finished with exit code -1073741819 (0xC0000005)
退出脚本。下面是我如何尝试拆分字符串,帮助我调试这个问题。
//declare and assign the sentence I need to split
char * sentence ="Cat,Dog,Lion";
//declare and assign the delimiter
char * delim=",";
//get the first token
char * token = strtok(sentence, delim);
while(token!= NULL){
//print a single string token
printf("%s",token);
//reset the loop for the iteration to continue
token = strtok(NULL,delim);
}
函数strtok
将把空字符写入其第一个参数所指向的字符串中。因此,该字符串必须是可写的。但是,您提供的是一个只读的字符串字面值。尝试写入字符串字面值将调用未定义的行为。
char * sentence ="Cat,Dog,Lion";
:
char sentence[] = "Cat,Dog,Lion";
这样,sentence
将是一个可写数组,而不是指向字符串字面值的指针。