在此示例程序中,我使用strtok_r
將字符串拆分爲兩個標記。指望strtok_r的內部指針安全嗎?
#include <stdio.h>
#include <string.h>
int main(void) {
char buf[] = "Hello World!";
char tok[] = " ";
char *p;
char *retStr = strtok_r(buf, tok, &p);
printf("\"%s\" \"%s\"\n", retStr, p);
return 0;
}
該程序的輸出是
"Hello" "World!"
按照man page指針p
在內部被strtok_r
再入目的。假設它指向字符串的其餘部分也是安全的,因爲我在這裏?
它沒有明確指定,所以我不會依賴它。它可以被一個實現用來指向一些特殊的內部結構(儘管這是不太可能的;它很難清理它)。 – Dave 2014-09-02 19:47:16
一個更現實的含糊不清是指向最新的令牌,還是最近的令牌之後的一個空間,或者它的變化。 – Dave 2014-09-02 19:48:41