输入1继续,输入0退出,搞半天不对。各路大神解答一下

Miracle-0128 2017-12-11 06:57:48
输入1继续,输入0退出,搞半天不对。各路大神解答一下

...全文
439 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-12-12
  • 打赏
  • 举报
回复
引用 3 楼 Vereinbart 的回复:
还是这样,不知道为什么
哦,找到原因了,你再每次scanf的后面加一条语句getchar();因为你输入1后,换行符还在输入缓存里,此时gets是遇到换行符就直接结束输入,因此会有这个问题。
自信男孩 2017-12-12
  • 打赏
  • 举报
回复
引用 2 楼 Cavout 的回复:
你的main函数开始的时候输入n的值,如果你一开始输入的就是1,在主程序中的while循环中又无法改变n的值,所以也就一直在while中循环了。你可以在每一次while的时候改变n的值来确定是否退出。 while (1){ check (); scanf (“%d”,&n); if (n == 0) break; }
这样是可以的。 因为输入1继续,输入0退出。那么,在while循环没有输入,那么while循环就不会接收到你的新指令(0, 1)
Cavout 2017-12-12
  • 打赏
  • 举报
回复
引用 3 楼 Vereinbart 的回复:
还是这样,不知道为什么
还有就是我看了一下你的check函数,函数里面while(*p)来作为循环条件,我感觉是不对的,你输入的是字符串,字符串的结束符是'\0',但是这个字符并不代表它是NULL,所以while('\0')这个条件是成立的,所以也就一直循环了。 还有就是我看你的截图好像是没有输入字符串是不是就给出了匹配的结果。 我也不知道我说的对不对,当讨论把,哈哈。
Cavout 2017-12-12
  • 打赏
  • 举报
回复
引用 3 楼 Vereinbart 的回复:
还是这样,不知道为什么
看你这个截图你输入的1是你的check函数里面的输入嘛,并不是while循环中的那个输入n值。
Miracle-0128 2017-12-11
  • 打赏
  • 举报
回复

还是这样,不知道为什么
Cavout 2017-12-11
  • 打赏
  • 举报
回复
你的main函数开始的时候输入n的值,如果你一开始输入的就是1,在主程序中的while循环中又无法改变n的值,所以也就一直在while中循环了。你可以在每一次while的时候改变n的值来确定是否退出。 while (1){ check (); scanf (“%d”,&n); if (n == 0) break; }
paschen 2017-12-11
  • 打赏
  • 举报
回复
你主函数中的while循环是个死循环,你是否要判断的是n是否为1,但不是写是while(1)

69,369

社区成员

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

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