用scanf为数组赋值的问题(如何提前跳出循环?)(c语言)

ang_shine 2016-12-03 08:42:21
比如说,我定义一个长度为30的整数型数组,我用一个for循环和scanf()函数来为数组赋值,但我不一定要输够30个元素,如果我想输入了20个数之后就结果循环(停止为数组赋值)该如何实现呢??或者可以使用其他函数??(输入整数,而不是字符串) 求高手支招!!
...全文
1062 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-12-05
  • 打赏
  • 举报
回复 1
用while可能会比你的for更好

int a[30] = {0}, i = 0;
do{
scanf("%d", &a[i++]);
} while (getchar() != '\n');
AlbertS 2016-12-05
  • 打赏
  • 举报
回复
引用 2 楼 sinat_36461027 的回复:
那请问(问题有点儿多,非常感谢!), 1.我能不能设定一个判断在输入回车的时候结束循环呢? 2.如果我只输入一个回车(回车前不输入任何其他东西),getchar()也会从缓冲区内读走‘\n'么? 3.如果我写 for(i=0;i<N&&getchar()!='\n';i++) { scanf("%d",&a[i]); } 是不是scanf()就不能从缓冲区里读到任何东西?
可以通过回车判断结束输入
自信男孩 2016-12-05
  • 打赏
  • 举报
回复
通过判断最后一个输入的数据,比如你可以定义输入-1时,循环退出;或者判断输入很大的数据然后退出循环,比如(>10000),前提是这个大数据不是你想要的;
赵4老师 2016-12-05
  • 打赏
  • 举报
回复
不判断scanf函数返回值的c程序员都在走钢丝。
paschen 2016-12-03
  • 打赏
  • 举报
回复 2
按CTRL+Z结束输入,然后通过scanf返回值(EOF)判断是否是用户提前结束的 scanf返回值含义:http://en.cppreference.com/w/c/io/fscanf
ang_shine 2016-12-03
  • 打赏
  • 举报
回复
那请问(问题有点儿多,非常感谢!), 1.我能不能设定一个判断在输入回车的时候结束循环呢? 2.如果我只输入一个回车(回车前不输入任何其他东西),getchar()也会从缓冲区内读走‘\n'么? 3.如果我写 for(i=0;i<N&&getchar()!='\n';i++) { scanf("%d",&a[i]); } 是不是scanf()就不能从缓冲区里读到任何东西?
ipqtjmqj 2016-12-03
  • 打赏
  • 举报
回复
你输入的都是字符串,scanf中的f代表格式转换,就是把字符串转成指定的类型, 结果循环你可以在输入时按ctrl+z, 代码中判断scanf返回值是否为EOF

69,371

社区成员

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

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