问问题
1647 次
3 回答
1
尝试这个
#include<stdio.h>
void remove_all_chars(char* str) {
char *pr = str, *pw = str;
while (*pr) {
if(isascii(*pr))
{
//printf("%c: is ascii char \n", *pr);
*pw = *pr;
pw++;
}
pr++;
}
*pw = '\0';
}
main()
{
char str[100] = "asÄ—df";
remove_all_chars(str);
printf("%s\n",str);
}
于 2014-03-25T16:29:25.060 回答
0
我猜你正在做类似的事情
remove_all_chars(some_string, 'A€bcd');
请注意,您在字符文字中使用了多个字符。这是不允许的,除非作为编译器的扩展。而且很可能不会像您预期的那样工作。
而是将要删除的字符作为字符串传递:
remove_all_chars(some_string, "A€bcd");
当然,对remove_all_chars
功能进行适当的修改。
于 2014-03-25T15:39:29.613 回答
0
我试过了:
void removeSubstring(char *s,const char *toremove)
{
while( s=strstr(s,toremove) )
memmove(s,s+strlen(toremove),1+strlen(s+strlen(toremove)));
}
从字符串中删除子字符串?它有效。
这样一来,€符号就被视为字符串,实际上它占用了3个字节(尝试strlen(“€”))!
于 2014-03-27T10:02:12.140 回答