如何从C语言中删除给定字符串中的所有空格和制表符?

goe*_*goe 5 c string tabs spaces

什么C函数,如果有的话,从字符串中删除所有前面的空格和制表符?

谢谢.

Dan*_*ker 14

在C中,字符串由指针标识,例如char *str,或者可能是数组.无论哪种方式,我们都可以声明自己的指针,指向字符串的开头:

char *c = str;
Run Code Online (Sandbox Code Playgroud)

然后我们可以使指针移过任何类似空格的字符:

while (isspace(*c))
    ++c;
Run Code Online (Sandbox Code Playgroud)

这会将指针向前移动,直到它没有指向空格,即在任何前导空格或制表符之后.这使原始字符串保持不变 - 我们刚刚更改了指针c指向的位置.

你将需要这个包括isspace:

#include <ctype.h>
Run Code Online (Sandbox Code Playgroud)

或者如果您乐意定义自己对空白字符的看法,可以只写一个表达式:

while ((*c == ' ') || (*c == '\t'))
    ++c;
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,这会将指针“c”移动到第一个非空格字符,假设它从字符串的开头开始。它根本不会改变字符串。我指出这一点是因为如果您有另一个指向字符串开头的指针,它仍将指向字符串的原始开头,其中可能有空格。需要明确的是,这种技术是非常受欢迎的,因为您不是在字符串中四处移动位,但您必须意识到您正在移动指针,而不是消除空格。您必须很好地理解指针才能理解差异。 (2认同)