删除'|'从一个字符串

时间:2011-12-21 07:59:28

标签: c unix

我写了以下代码替换'|'字符串中的字符。

#include <stdio.h>
#include <stdlib.h>

void remove_pipes(char*);

main (int argc, char **argv)
{

char string1[] = "|||||||||||||";
remove_pipes(string1);
printf("String1 = %s", string1);
char string2[] = "h|e|l|l|o";
remove_pipes(string2);
printf("String2 = %s", string2);
}

void remove_pipes(char* input)
{
  for(; *input; input++)
  {
      if(*input == '|')
      {
          *input = ' ';
      }
  }
}

现在我需要修改此方法以删除“|”字符串中的字符。我不知道该怎么做。希望有人可以给我一些提示。

1 个答案:

答案 0 :(得分:4)

使用字符指针移动输入并对其进行修改:

#include <stdio.h>
#include <stdlib.h>

void remove_pipes(char*);

main (int argc, char **argv)
{

    char string1[] = "|||||||||||||";
    printf("String1 = %s\n", string1);
    remove_pipes(string1);
    printf("String1 = %s\n", string1);
    char string2[] = "h|e|l|l|o";
    printf("String2 = %s\n", string2);
    remove_pipes(string2);
    printf("String2 = %s\n", string2);
}

void remove_pipes(char* input)
{
    unsigned idx = 0;
    char* aux = input;

    for(; *input; input++)
    {
        if (*input != '|')
        {
            *(aux + idx++) = *input;
        }
    }
    *(aux + idx) = '\0';
}