我必须在 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];
}
}
}
答案 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。在这种情况下,继续下一个字符。