zoukankan      html  css  js  c++  java
  • 持续输入问题

    scanf()函数是有返回值的,成功读入的数据个数其返回值,没有数据被读入,返回0,如果发生错误,则返回EOF。
    scanf()函数是读入函数的之一,还有用于数据文件读入的fscanf()等。fscanf()在遇到文件结束符时返回EOF。

    char a[3];

    while(scanf("%s",a)!=EOF)     它和while(cin>>a)或者while((cin>>a)!=0)是等价的  (这里用scanf恰好体现了半文件式输入的特点)

    fun(a);

    需要强调的是:

    EOF文件结束符是只在文件末尾才有的。之所以在这里给scanf挂EOF,原因是测试时的输入是基于文件输入的。(我们做题目的平台也是如此)这也正是命令行中运行时,需要手动给出ctrl+z的原因(这也恰好是之前那个while(scanf==1)的问题:代码在平台上运行没有问题,自己在本地运行时却始终结束不了,必须手动输入EOF)

    。这种输入我们可以把它称之为半文件式的输入(文件末尾会模拟输入EOF),不过这里用的不是文件式的输入,而是cin或者scanf而已。

    另外,每次执行循环时,while都会重新输入a,然后执行循环里对a的操作,也就是读完之后操作自己读的内容,之后再读下一次。

    如果每次需要操作一个而不是一行,那么就只需把scanf里的参数换成char c即可。(文件的读入和这个也是一样的)

    还需要强调的是,要注意和文件中读入挂EOF的相同和区别的理解。文件中挂EOF时,就不是从键盘输入了(叫它全文件型的读入,哈哈)

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    【Nginx】开启 gzip和缓存
    webpack分离css单独打包
    【转】为什么Github没有记录你的Contributions
    Swiper使用遇到的问题
    Jenkins 自动化构建
    Pre标签 自动换行
    Gulp入门教程
    计数排序
    直接插入排序
    等差素数列
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13656405.html
Copyright © 2011-2022 走看看