『C/C++』接收未知个数的数据与EOF
大多数时候,要接收的参数的个数都是已知的
但在有些时候,参数的个数是未知的,这时就需要通过判断scanf()
的返回值是否为EOF
来解决
scanf()
会在读到文档末尾时返回EOF(End Of File)
,而在命令行中,则需要按下 Ctrl + Z 再按下Enter 来输入这一字符
因此在C中,我们可以使用下面的这一结构
1 | while (scanf("%d", &a[++count]) != EOF); |
执行完成后,输入的数字会保存在a[]
中,而count
的值就是个数
在C++中,借助cin
还可以写得更简单
1 | while (cin >> a[++count]); |
由于本人习惯将数组的0号位置用于保存数组内元素的个数,所以也经常会写成这样
1 | while (scanf("%d", &a[++a[0]]) != EOF); |
评论
GiscusTwikoo