1
4

3 回答 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 回答