修剪C中的字符串(不使用库函数)

leo*_*leo 3 c pointers

我希望得到一些帮助,反对完整的解决方案,我有一个想法,我需要知道我在尝试实施时做错了什么.

基本上我试图从C中的字符数组的末尾删除空格.

  • 我有一个方法来计算字符串的长度并将其存储到int中.

  • 我设置了一个指针指向我的字符数组的第一个元素.

  • 然后我将指针设置为字符串的长度 - 1(以便不超过n-1的数组索引).

  • 如果这里的元素不是空格,那么我知道最后没有空格所以我只是将元素作为一个整体返回.

这就是我被困住的地方,现在在其他地方,我知道它一定是最后的空间角色' '吗?如果不使用库函数,我怎么能从字符串中删除这个空格,然后继续循环直到我遇到一个不是字符的字符' '?循环比特直到我遇到一个不是' '(空间)的角色很容易 - 它只是去除了证明一个野兽.

请不要完整的解决方案,因为这是家庭作业,我不想作弊.

Dan*_*ker 9

诀窍是C中的字符串以NUL字符结束(值为零).因此,您可以通过简单地用零值覆盖来删除字符串末尾的字符.


Guv*_*nte 6

有两种方法

  1. 将字符串视为空终止,换句话说,字符串的真实结尾为'\ 0'(0x00),然后您可以简单地用'\ 0'替换末尾的空格,直到您点击非空格字符.
  2. 确定新字符串的长度并复制它.基本上当你按照你的方式工作时,减少你的长度,直到你击中一个非空格字符(注意这里的一个错误).最后创建一个新的字符数组,并根据这个长度复制元素.

这取决于你需要做什么最好的方式.