我的代码应删除我提供的字符串中的所有元音。但如果元音是字符串的最后一个字符,它不会删除。
#include <stdio.h>
#include <string.h>
int main()
{
int i=0;
char str[100];
printf("Enter a string :\n");
gets(str);
int len=strlen(str);
while(str[i]!='\0')
{
printf("%c",str[i]);
if(str[i]=='A'||str[i]=='a'||str[i]=='E'||str[i]=='e'||str[i]=='I'||str[i]=='i'||str[i]=='O'||str[i]=='o'||str[i]=='U'||str[i]=='u')
printf("\b");
i++;
}
return 0;
}
就像我提供字符串Hello它打印Hllo它应该打印Hll ...但是如果我将while条件更改为(i
答案 0 :(得分:2)
我猜打印\ b不会做你想象的那样。它不会删除最后打印的字符,它只打印一个额外的“退格”字符,在某些输出设备(如控制台)上向后移动一个字符。 (然后, next 字符将覆盖您想要'删除'的字符。)
不要那样做。相反,移动'if'语句,以便您不首先打印这些元音!
答案 1 :(得分:0)
你可以试试这个
#include <stdio.h>
#include <string.h>
int main()
{
int i=0;
char str[100];
printf("Enter a string :\n");
fgets(str,100, stdin);
int len=strlen(str);
while(str[i]!='\0')
{
if(str[i]=='A'||str[i]=='a'||str[i]=='E'||str[i]=='e'||str[i]=='I'||str[i]=='i'||str[i]=='O'||str[i]=='o'||str[i]=='U'||str[i]=='u'){
continue;
}else{
printf("%c",str[i]);
}
i++;
}
return 0;
}