【发布时间】:2012-03-27 18:17:03
【问题描述】:
我正在尝试从 C 中的字符串中删除一个字符。我的代码遇到的问题是它从字符串中删除了该字符的第一个实例,但也擦除了字符串中该字符之后的所有内容。例如,从 'hello' 中删除 'l' 会打印出 'he' 而不是 'heo'
int i;
char str1[30] = "Hello", *ptr1, c = 'l';
ptr1 = str1;
for (i=0; i<strlen(str1); i++)
{
if (*ptr1 == c) *ptr1 = 0;
printf("%c\n", *ptr1);
ptr1++;
}
我需要为此使用指针,并希望尽可能简单,因为我是 C 的初学者。 谢谢
【问题讨论】:
-
提示:在删除过程中,您希望将其他字母向上移动以覆盖您删除的字母。
*ptr1 = 0;不是这样做的方法。 -
您还使用了 for/loop 来处理每个字符的索引,但您从未使用实际索引(i 的值)
-
另一件要记住的事情,在 CS 中,字符串是空终止的。
-
意思是在 C 中是字符串.... 阅读障碍打字机.....