我有以下字符串:

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

我想把每一个句子都翻出来,然后我开发了一个算法,在达到“jnz t inicio”之前运行良好
如果我看到(char *) buffer+65我得到"jnz t inicio\nend\n",那么,为了从那里得到“jnz t inicio”,我执行了以下操作:
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“。
有什么想法吗?
如果您需要任何额外的信息,请询问。谢谢!

最佳答案

C字符串必须始终以'\0'字符结尾所以缓冲区大小需要为14字节,并且需要在复制之后终止字符串。

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

09-25 21:07