我正在创建一个共享对象,它过滤从char * buff_in接收的字母数字字符并将它们复制到char * buff_out中,现在我的代码正在执行我想要的操作,但它会在数字之间创建^ @。
int tratar(char* buff_in, char* buff_out){
int i = 0;
while(buff_in[i]){
if(!isalpha(buff_in[i])){
buff_out[i] = buff_in[i];
}
i++;
}
printf("%s", buff_out);
}
如果我运行该程序,一切看起来都不错,但是当我在编辑器中查看返回的值时,我看到:^ @ ^ @ ^ @ ^ @ ^ @ 1 ^ @ ^ @ ^^ @ ^ @ 10 ^ @ ^ @ ^ @ 50 ^ @ ^ @ ^ @。当它应该只有1 10 50。
谢谢
答案 0 :(得分:2)
你需要一个不同的buff_out索引:
int i = 0, j = 0;
...
buff_out[j++] = buff_in[i];
此外,在printf():
之前,null-terminate buff_outbuff_out[j] = '\0';