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

时间:2010-02-16 18:17:37

标签: c pointers

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

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

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

  • 我设置了一个指针指向我的角色数组的第一个元素。

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

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

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

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

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:6)

有两种方法

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

答案 2 :(得分:0)

您可以通过在希望终止的位置插入'\ 0'来终止字符串。所以,你从最后开始,向后计数,直到找到一个空格以外的东西,然后向后退一个并放入'\ 0'。

答案 3 :(得分:0)

C中的字符串以空值终止。

答案 4 :(得分:0)

C中的字符串以'\ 0'字符终止。

如果你有一个字符指针

,那么......

   *p = 'c';                    and
   *(p  + 0) = 'c';             and
   p[0] = 'c';

将所有写入'c'到

指向的字节。

继续这个主题......

   *(p + 1) = 'c';              and
   p[1] = 'c';

将“c”写入

指向的字节后的字节。

答案 5 :(得分:0)

你知道字符串的长度,所以只需从字符串的末尾开始并向后工作。每当遇到空格时,只需将其替换为空终止字符\ 0。