【发布时间】:2014-04-09 23:23:20
【问题描述】:
我正在创建一个共享对象,它过滤从 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 时。
谢谢
【问题讨论】:
-
您需要不同的索引(或指针)来分配累积的输出字符。如果前两个字符是 alpha 怎么办?您开始将第三个输入字符写入输出缓冲区中的 third 槽。
-
使用
isalpha()需要if(!isalpha((unsigned char) buff_in[i])){应该签名char。
标签: c filter char alphanumeric