gpt4 book ai didi

c - 如何从 C 中的字符串中删除所有出现的给定字符?

转载 作者:太空狗 更新时间:2023-10-29 16:27:46 27 4
gpt4 key购买 nike

我试图从 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写),总是读指针前移,写指针只前移当它不指向给定字符时。

关于c - 如何从 C 中的字符串中删除所有出现的给定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9895216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com