C语言中删除给定字符串前面的空格和制表符
什么 C 函数(如果有)可以从字符串中删除所有前面的空格和制表符?
What C function, if any, removes all preceding spaces and tabs from a string?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
什么 C 函数(如果有)可以从字符串中删除所有前面的空格和制表符?
What C function, if any, removes all preceding spaces and tabs from a string?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
在 C 中,字符串由指针标识,例如 char *str,也可能是数组。无论哪种方式,我们都可以声明我们自己的指针,该指针将指向字符串的开头:
然后我们可以使指针移动经过任何类似空格的字符:
这将使指针向前移动,直到它不指向空格,即之后任何前导空格或制表符。这使得原始字符串保持不变 - 我们刚刚更改了指针
c
指向的位置。您将需要此包含来获取
isspace
:或者,如果您愿意定义自己对空白字符的想法,您可以编写一个表达式:
In C a string is identified by a pointer, such as
char *str
, or possibly an array. Either way, we can declare our own pointer that will point to the start of the string:Then we can make our pointer move past any space-like characters:
That will move the pointer forwards until it is not pointing to a space, i.e. after any leading spaces or tabs. This leaves the original string unmodified - we've just changed the location our pointer
c
is pointing at.You will need this include to get
isspace
:Or if you are happy to define your own idea of what is a whitespace character, you can just write an expression:
一个更简单的修剪空白的函数
A simpler function to trim white spaces
你只需要给buff足够的空间即可。
You just need to give buff enough space.
您可以设置一个计数器来计算相应的空格数,并相应地将字符移动相应的空格数。其复杂度最终为O(n)。
You can setup a counter to count the corresponding number of spaces, and accordingly shift the characters by that many spaces. Complexity for this ends up at O(n).