C从字符串中删除字符

时间:2011-10-19 13:25:55

标签: c string char

我必须在 C 中编写一个函数,它会删除字符串中与输入字符相等的所有字符。 例如,用户输入字符串“aabbccaabbcc”和char'b',那么结果应该是“aaccaacc”。 我在代码中找不到错误(函数不会删除所有应删除的字符):

void removechar( char str[], char t )
{
  int i,j;
  for(i=0; i<strlen(str); i++)
  {
    if (str[i]==t) 
      for (j=i; j<strlen(str); j++)
      {
        str[j]=str[j+1];   
      } 
  }
}

3 个答案:

答案 0 :(得分:2)

当您在该索引处删除一个字符(例如在index = 5处)时,现在对应于索引= 6的字符;但是你的循环增量到index = 6,所以你跳过index = 5的新char 你最好复制到一个新的字符串有效字符,这更容易 或者你可以尝试

void removechar( char str[], char t )
{
    int i,j;
    i = 0;
    while(i<strlen(str))
    {
        if (str[i]==t) 
        { 
            for (j=i; j<strlen(str); j++)
                str[j]=str[j+1];   
        } else i++;
    }
}

答案 1 :(得分:1)

由于这看起来像是一项家庭作业,我只会给你一个提示。想想当你要删除两个相邻角色时,你的字符串和循环计数器会发生什么。

答案 2 :(得分:1)

您无法以这种方式从字符串中删除字符。 你想要做的是创建一个新的字符串(char *数组)和复制字符,除非char是t。在这种情况下,继续下一个字符。