输入字符数组时无法跳出循环 if(str[i]=='\0') break;

求解!!想问问为什么第一个for循环跳不出来,但是把if(str[i]=='\0') 换成if(str[i]=='\n')的时候就能顺利运行呢?

int main()
{
 int i;
 char str[80];
 for(i=0;i<80;i++)
 {
  scanf("%c",&str[i]);
  if(str[i]=='\0')  break; 
 }
printf("%s",str);
 return 0;
 } 

'\0' 结束符,你键盘无法输入,只有换行或者其他可输入字符才能判断呀

'\0'是无法输入的,所以无论输入什么,str[i]都不会等于'\0'。'\n'是回车,是可以输入的。

如果你要用 if(str[i]=='\0') break;
那么可以在循环外面 scanf("%s",str); 一次性把字符读取进来

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^