我有以下字符串:
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';