gpt4 book ai didi

c - 如何用其他字符替换字符串中的特定字符

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

我正在尝试编写一个程序,将字符串作为输入并用 * 符号替换所有元音。因此,对于“hello world”,star_vowels 应该返回“h*ll* w*rld”。

到目前为止,我的代码是:

int star_vowels(char s[]){

int j;

j = 0;
while (s[j] != '0'){
j++;
if (s[j] = 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u'){
putchar('*');
} else {
putchar(j);
}
return 0;
}
}

最佳答案

这段代码有很多问题。

1) while (s[j] != '0')我很确定您想检查 NUL 字符,而不是字符常量零。将 '0' 更改为 '\0'

2) j++在查看数组的第 0 个索引之前,您正在递增 j。如果你在 s[0] 处有一个元音,这将被遗漏。将 j++ 移动到 while 循环的最底部,就在结束大括号之前。

3) s[j] = 'a'当您应该使用等于运算符 == 时,您在这里使用了赋值运算符 =。使用赋值运算符是合法的 C 代码,因此可以编译。不幸的是,它会返回 true,你最终会用星号替换所有字符

4) putchar(j);当您真正想要输出 s[j](您的角色)时,您正在尝试输出“j”(您的迭代器)。

5) 返回 0就像在 #2 中一样,您的 return 声明在错误的位置。当它应该在 while 循环的外部 时,它却在 while 循环中。按照您编写的方式,while 循环只会在您的函数超出范围之前执行第一次迭代。

int star_vowels(char s[]) {

int j = 0;

while (s[j] != '\0'){
if (s[j] == 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u') {
putchar('*');
} else {
putchar(s[j]);
}
j++;
}
return 0;
}

关于c - 如何用其他字符替换字符串中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243488/

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