zoukankan      html  css  js  c++  java
  • EOF和scanf函数

    EOF和scanf函数

    scanf函数的返回值

    scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束(end of file)”或者错误则返回EOF,EOF定义为int型的-1,end of file 为Ctrl+Z或Ctrl+D。
    例:
    scanf("%d",&a); 正常取值返回1
    scanf("%d,%d",&a,&b); 正常取值返回2
    如果输入1,2,scanf函数将返回2
    如果输入1 2,scanf函数将返回1,非正常取值
    如果输入 ,1 2,scanf函数将返回0,非正常取值

    while(scanf(“xxx”)!=EOF)

    当有多组测试数据的时候(不知道多少组),就不能用i计数循环输入了,这时候就需要EOF了,测试数据基本上都是满足scanf函数正常取值的且scanf函数正常取值后的返回值不可能等于EOF,所以while会一直执行,直到测试结束输入EOF即可

    while(~scanf(“xxx”))

    ~号是位运算的取反符号

    例:
    while(~scanf("%d%d%d%d",&a,&b,&c,&d))

    如果scanf返回值是4–>二进制0000 1000 偷懒就打一个字节
    ~4 = 1111 0111 补码
    减1,除首位取反得
    1000 1001–>十进制-5
    while语句继续执行

    如果scanf返回的是EOF即-1 -->1111 1111 还是懒得打
    ~-1 = 0000 0000 -->十进制0
    while里表达式的值为0,结束循环

  • 相关阅读:
    P2149 [SDOI2009]Elaxia的路线
    P1346 电车
    P3174 [HAOI2009]毛毛虫
    P3047 [USACO12FEB]附近的牛Nearby Cows
    P4053 [JSOI2007]建筑抢修
    P2607 [ZJOI2008]骑士
    [HNOI2006]马步距离
    [POI2014]Hotel
    [BZOJ3856]Monster
    [BZOJ2819]Nim
  • 原文地址:https://www.cnblogs.com/yanhua-tj/p/13996591.html
Copyright © 2011-2022 走看看