使用C中的指针从字符串中提取子字符串

时间:2018-09-23 20:38:56

标签: c string pointers buffer

我目前正在尝试在缓冲行中提取一个子字符串。目的是通过空格和符号来解析字符串,以便以后进行编译。我要解析的行是文件的第一行。

program

我清除令牌字符串错误吗?该代码仅返回:

program
example(input,
output);

但它应该返回

allowDuplicates

1 个答案:

答案 0 :(得分:1)

您的代码有一些根本上的错误(缓冲区溢出的可能性)  在您的append()函数中,等等)。据我了解,我已经进行了足够的更改以允许代码产生所需的结果。

int main(void){    
    char str[] = "program example(input, output);";

    char *f = str;

    char *token=(char *)malloc((strlen(str)+1)*sizeof(char));
    char *b = token;

    while(*f != '\0'){
        while (*f && *f != ' ')
        {
            *b++=*f;
            f++;
        }
        if(*f) f++;
        *b=0;
        b=token;
        printf("%s\n",token);
    }
    free(token);
    return 0;
}
$ ./a.out 
program
example(input,
output);