zoukankan      html  css  js  c++  java
  • EOF读取字符如何停止

    转自 https://www.cnblogs.com/engraver-lxw/p/7620142.html 和 https://www.cnblogs.com/xyl-share-happy/archive/2012/08/28/2660873.html

    之前一直不知道 while(scanf("%d",&n)!=EOF) 这种怎么正常结束输出,后来尝试一个一个读取字符时遇到问题,就上网查了一下,就找到以上两篇文章,下面是我对一些测试结果。

    先说明一下我用的是 vs2015

    一,

            while((*(ps+i++)=getchar())!=EOF)
    	{
    		//isspace   判断空字符  9 10 11 12 13 32   
    		if (s[i - 1] != 9 && s[i - 1] != 10 && s[i - 1] != 11 && s[i - 1] != 12 && s[i - 1] != 13 && s[i - 1] != 32)
    			*(pt + j++) = *(ps + i - 1);
    	}
    

     1,没有输入任何数据为前提  :EOF -> 回车 -> ctrl+z -> 回车   跳出循环

       2,ctrl+z -> 回车  跳出循环,由此和最后1 中EOF被读入字符中可知 , 1中与 是否输入EOF没有关系

    所以得出 用 getchar的话是与 EOF没有关系的

    二,

            while (scanf("%c", (ps + i++)) != EOF)
    	{
    		if (s[i - 1] != 9 && s[i - 1] != 10 && s[i - 1] != 11 && s[i - 1] != 12 && s[i - 1] != 13 && s[i - 1] != 32)
    			*(pt + j++) = *(ps + i - 1);
    	}
    

        这个需要 

     ctrl+z ->回车 -> ctrl+z -> 回车 

     三,

    while (scanf("%s",s) != EOF)
    {  
    		
    }
    

     这个需要

     ctrl+z ->回车 -> ctrl+z -> 回车 ->ctrl+z ->回车

    总结:这几个不同的原因吗,暂时不知道

  • 相关阅读:
    WIN10下Java环境变量配置
    Oracle中用户的创建和权限设置
    Oracle表空间的创建与删除
    设置RHEL-7.0的运行级别
    发布项目到Tomcat(域名直接访问)
    centos7 打开80端口(网络搜集)
    MySql字符乱码问题解决(真)
    centos7安装workbench
    centos7添加Windows引导
    centos7下yum安装mysql(转)
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12343015.html
Copyright © 2011-2022 走看看