任何人都可以解釋爲什麼我在以下示例中出現分段錯誤?使用strtok_r時的分段錯誤
#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\n", tokens[i++]);
}
}
謝謝噸。:) – 2010-02-09 06:59:23
這個例子給我一個printf行的段錯誤。 gdb打印令牌顯示0xffffffffffffdad0 <地址0xffffffffffffdad0越界>當我編譯proj1.c:33:2時警告:隱式聲明函數'strtok_r'[-Wimplicit-function-declaration] proj1。c:33:14:warning:賦值使得整型指針沒有強制轉換[缺省情況下啓用] – schwiz 2012-10-01 00:48:21
對不起,我是一個新手,爲什麼不應該是'char * ptr = Hello;'大寫H?此外,Alok的回答說,第一次參數需要「標記」,然後後續調用需要爲NULL,但是看起來你的例子只是把它稱爲while循環中的一種方式?感謝代碼btw – 2012-12-17 22:48:16