本文介绍了使用 strtok_r 时出现分段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
谁能解释为什么我在以下示例中遇到分段错误?
Can anyone explain why I am getting segmentation fault in the following example?
#include <stdio.h> #include <string.h> int main(void) { char *hello = "Hello World, Let me live."; char *tokens[50]; strtok_r(hello, " ,", tokens); int i = 0; while(i < 5) { printf("%s ", tokens[i++]); } } 推荐答案试试这个:
#include <stdio.h> #include <string.h> int main(void) { char hello[] = "Hello World, Let me live."; // make this a char array not a pointer to literal. char *rest; // to point to the rest of the string after token extraction. char *token; // to point to the actual token returned. char *ptr = hello; // make q point to start of hello. // loop till strtok_r returns NULL. while(token = strtok_r(ptr, " ,", &rest)) { printf("%s ", token); // print the token returned. ptr = rest; // rest contains the left over part..assign it to ptr...and start tokenizing again. } } /* Output: Hello World Let me live. */更多推荐
使用 strtok
发布评论