从字符串中删除空格和特殊字符

der*_*tzi 3 c string

如何从字符串中删除空格特殊字符?

谷歌搜索时我找不到一个答案.有很多与其他语言有关,但不是C.大多数人都提到使用正则表达式,这不是C标准(?).

删除简单空间很容易:

 char str[50] = "Remove The Spaces!!";
Run Code Online (Sandbox Code Playgroud)

然后是一个带有if语句的简单循环:

if (str[i] != ' ');
Run Code Online (Sandbox Code Playgroud)

输出将是:

RemoveTheSpaces!!
Run Code Online (Sandbox Code Playgroud)

我将什么添加到if语句中以便识别特殊字符并将其删除?

我对特殊字符的定义:

Characters not included in this list: 
A-Z a-z 0-9
Run Code Online (Sandbox Code Playgroud)

小智 7

这可能不是实现这一目标的最有效方法,但它可以相当快地完成工作.

注意:此代码确实要求您包含<string.h><ctype.h>

char str[50] = "Remove The Spaces!!";
char strStripped[50];

int i = 0, c = 0; /*I'm assuming you're not using C99+*/
for(; i < strlen(str); i++)
{
    if (isalnum(str[i]))
    {
        strStripped[c] = str[i];
        c++;
    }
}
strStripped[c] = '\0';
Run Code Online (Sandbox Code Playgroud)

  • 您忘记了 strStripped 的 NUL 终止符: ```strStripped[c]='\0';``` 位于循环之后。 (2认同)
  • 请注意,在循环条件中使用`strlen()`会导致不良(二次)性能而不是线性性能.使用`int len = strlen(str);`然后在循环条件中测试`len`. (2认同)