我目前正在尝试在缓冲行中提取一个子字符串。目的是通过空格和符号来解析字符串,以便以后进行编译。我要解析的行是文件的第一行。
program
我清除令牌字符串错误吗?该代码仅返回:
program
example(input,
output);
但它应该返回
allowDuplicates
答案 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);