在C中解析代码会带来额外的字符

时间:2014-07-01 03:21:36

标签: c algorithm parsing

我有以下字符串:

char *buffer = "begin\nvariables f,i,t\nf = 20\n:inicio\ni = i + 1\nprint i\nt = f - i\njnz t inicio\nend\n";

我希望每个句子都有toparse,我开发了一个很好的算法,直到我达到" jnz t inicio \ n"

如果我看(char *) buffer+65我得到"jnz t inicio\nend\n",那么,为了获得" jnz t inicio \ n"在那里,我做了以下事情:

void *output = malloc(13); // 13 being the length of jnz t inicio\n
memcpy(output,buffer+65,13); // to get the first 13 characters out of buffer+65

但是,当我看到(char *) buffer我得到"jnz t inicio\n,t\n"时,我得到了额外的",t \ n"出于某种原因。

有什么想法吗?

如果您需要任何其他信息,请询问。谢谢!

1 个答案:

答案 0 :(得分:3)

C字符串必须始终以'\0'字符终止。所以缓冲区大小需要14个字节,你需要在复制后终止字符串。

void *output = malloc(14);
memcpy(output,buffer+65,13);
output[13] = '\0';