写一个程序函数应该能够从两个字符串中删除所有的元音,并使用C将它们连接在一起?



写一个程序,给函数传递两个用指针表示的字符串。该函数应该能够从两个字符串中删除所有元音并将它们连接在一起。输入示例:第一个字符串:"abdef"第二个字符串:"ghijk">

输入图片描述

#include <stdio.h>
void filter (char *p, char *q)
{
while (*p != '')
{
if (*p != 'a' || *p != 'e' || *p != 'i' || *p != 'o' || *p != 'u')
{
*q = *p;
q++;
}
p++;
}
*q = '';
}
int main ()
{
char str1[10] = "hello";
char str2[10];
char *p, *q;
p = &str1[0];
q = &str2[0];
filter (p, q);
printf ("%s", str2);
return 0;
}

输出示例:"bdfghjk">

但是程序从原始字符串复制所有字符。为什么?

您只是使用了错误的逻辑运算符,||

如果不是a就复制*p而不是e等。该表达式将始终为true

只有当a不存在时,你才需要&&复制它而不是e等,所以你需要&&操作符:

void filter(char *p, char *q) {
while (*p != '') {
if (*p != 'a' && *p != 'e' && *p != 'i' && *p != 'o' && *p != 'u') {
*q = *p;
q++;
}
p++;
}
*q = '';
}

相关内容

  • 没有找到相关文章

最新更新