我正在尝试从 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 初学者。
谢谢
你可以这样做:
void remove_all_chars(char* str, char c) {
char *pr = str, *pw = str;
while (*pr) {
*pw = *pr++;
pw += (*pw != c);
}
*pw = '\0';
}
int main() {
char str[] = "llHello, world!ll";
remove_all_chars(str, 'l');
printf("'%s'\n", str);
return 0;
}
这个想法是保持一个单独的读和写指针(pr
用于阅读和pw
对于写入),始终推进读取指针,并且仅当写入指针不指向给定字符时推进写入指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)