我有以下字符串:
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"出于某种原因。
有什么想法吗?
如果您需要任何其他信息,请询问。谢谢!
答案 0 :(得分:3)
C字符串必须始终以'\0'
字符终止。所以缓冲区大小需要14个字节,你需要在复制后终止字符串。
void *output = malloc(14);
memcpy(output,buffer+65,13);
output[13] = '\0';