在C中解析代码会带来额外的字符
我有以下字符串:在C中解析代码会带来额外的字符,c,algorithm,parsing,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"; 我想把每一句话都逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句逐句 如果我观察(char*)buffer+65我会得到“jnz t inicio\nend\n
char *buffer = "begin\nvariables f,i,t\nf = 20\n:inicio\ni = i + 1\nprint i\nt = f - i\njnz t inicio\nend\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 tinicio\n,t\n”
,出于某种原因,我得到了额外的“t\n”
有什么想法吗
如果您需要任何其他信息,请询问。谢谢 C字符串必须始终以
'\0'
字符结尾。因此,缓冲区大小需要为14字节,并且需要在复制后终止字符串
void *output = malloc(14);
memcpy(output,buffer+65,13);
output[13] = '\0';
“当我观看(char*)缓冲区时
”,您的意思是“当我观看(char*)输出时
”?