新手c语言,求助break问题

luodihu 2017-10-14 07:44:42
#include <stdio.h>
int main ()
{
char a[80];
int i;
gets(a);
for (i=0;;i++)
if (a[i]='\0')break;
printf("%d",i);
return 0;
}
为什么我的编译器显示语法没有错误,却打进去一串字符后没有反义???求助
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-10-16
  • 打赏
  • 举报
回复
  
if (a[i]=='\0')    /*或判断a[i] == 0*/
    break;
赵4老师 2017-10-15
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
Erice_s 2017-10-15
  • 打赏
  • 举报
回复
for循环里面的if语句错了,是判断a[i]=='\0'时,break
仗剑逐风 2017-10-15
  • 打赏
  • 举报
回复
注意赋值语句=,和关系判断==区别
开心秋水 2017-10-15
  • 打赏
  • 举报
回复
a[i] == '\0'
「已注销」 2017-10-15
  • 打赏
  • 举报
回复
这种函数内部产生的值没有变量名,会存储在未知的地址。 你不能在后面来一段 for (i=1;i<=5;i++) sum=sum+f(i); f(i)是进入递归,不是存储数字,也就是说,你这么写,结合上面一段,会不断产生形参,直到堆栈区溢出,程序崩溃 递归产生的值要立刻使用,即使定义其他变量名比如一个数组也很容易数据溢出(即使你能做到,也最好不要这么干,纯粹增加修改麻烦)
luodihu 2017-10-15
  • 打赏
  • 举报
回复
引用 1 楼 baidu_37097818 的回复:
a[i] == '\0'
能不能在给我解决一个问题,在应用递归函数后,不是按照递归,递归中的每一个值都是已知?我在利用for语句进行总和运算,这样为什么就程序自动瓦解了?具体函数如下: #include <stdio.h> int main () { int f(int n); printf(" sum :%d ",f(5)); return 0; } int f(int n) { int c; if(n==1) c=10; else { c=f(n-1)+2;} int i,sum=0; for (i=1;i<=5;i++) sum=sum+f(i); return (sum); }

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧