大多数情况下,我们所熟知的输入输出都是标准I/O(标准输入输出),也就是我们在写代码时会直接从键盘读取,从屏幕输出。但是当我们涉及到数据统计或者多组未定义内容输入时,我们的程序就会出现一些小问题
int n = 0;
while(scanf("%d",&n)==1)
按照常理来说,这里 scanf
的返回值是成功输入的数的个数,输入一但结束,scanf 函数就无法继续读取 n,返回0,我们测试一下,输入“1,2,3,4,5”看看,好家伙,根本没有结果显示。是代码问题还是运行太慢?其实是还在等待输入,虽然我们可能觉得一个回车就可以搞定,但程序不会。
记得 scanf 的输入格式上对于空格,Tab,Enter键都是一视同仁,那如何才能告诉 程序我们输入结束了呢?在Windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再按Enter才能结束输入。在Linux下,只需Ctrl+Z即可结束输入。
也就是说上面的程序不是很方便,每次测试需要手动输入很多数,如果面对多组输入并且需要大量验证的测试,数据也只能保存在命令行中,仍然不够方便。
输入输出重定向
以上场景我们有个好的方法就是用文件把输入输出的数据放在文件里面,也就是所谓的输入输出重定向,放入事先准备好的数据,就不必每次重复输入了,也可以太多的输出一卷屏跑出来,属实不方便,而且在文件中放好标准的答案,可以很方便的进行比对,无需我们