C strtok来自多个函数的全局字符串

时间:2011-12-26 07:37:00

标签: c strtok

我使用了一个我要解析的全局字符串。解析是通过多种功能完成的。 例如,我在func1()中提取第一个标记,然后从func2()等中的相同全局字符串中提取第二个标记... 这可能吗?我知道在第一个之后提取标记是由strtok(NULL,delimiter)完成的,strtok将指针保存到下一个字节,用null替换为分隔符,但是我找不到描述strtok如何保存字符串的确切内容它在不同的功能中划界。

1 个答案:

答案 0 :(得分:1)

可能的。 strtok将字符串保存到静态内存中。

E.g。

#include <stdio.h>
#include <string.h>

char sentence[] = "The quick brown fox jumps over the lazy dog";
char* sentencep = sentence;

char* func1(void){
    char* p = sentencep;
    if(sentencep != NULL)
        sentencep = NULL;
    return strtok(p, " ");
}

char* func2(void){
    char* p = sentencep;
    if(sentencep != NULL)
        sentencep = NULL;
    return strtok(p, " ");
}

int main(){
    puts(func1());//The
    puts(func2());//quick
    puts(func2());//brown
    puts(func1());//fox
    return 0;
}