为什么i++最后我尝试编译的时候i会是0呢

问题遇到的现象和发生背景

void Che(char arr[100],int i)
{
int b=0;
for(b=0;b<i;b++)
{
if(arr[b]=='a'||arr[b]=='e'||arr[b]=='i')
{
printf("%c",arr[b]);
}
}
}

int main()
{
int i=0;
char arr[100];
char a;
while(scanf("%c",&a)&&a=='\0')
{
arr[i++]=a;
}
Che(arr,i);
printf("%d",i);
return 0;
}

scanf获取的是你从键盘键入的符号
这些符号必须是可见字符
不可见字符你是敲不进去的
像字符串结束符\0这种东西,是不可能从键盘键入的
它只会在字符串赋值之后自动添加,或者你用代码手动添加
没有一个键的键值是0
所以根本不要去与\0做比较,没意义
何况你还写反了,把不等于错写为等于
会导致你while条件永远为false,根本没有进入循环
但是直接改为不等于,那么就会陷入死循环,无法跳出
正确的做法是改为a!='\n',遇到回车就跳出循环,这样才对

up你尝试编译运行,控制台输入的是什么?

while循环条件 是 a!='\0'吧?

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632