如何从char *中过滤字母数字字符

时间:2014-04-09 23:23:21

标签: c filter char alphanumeric

我正在创建一个共享对象,它过滤从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。

谢谢

1 个答案:

答案 0 :(得分:2)

你需要一个不同的buff_out索引:

int i = 0, j = 0;
...
buff_out[j++] = buff_in[i];

此外,在printf():

之前,null-terminate buff_out
buff_out[j] = '\0';