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 ->回车

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

  • 相关阅读:
    git学习记录——基础概念和文件的基本操作
    java 之 Properties 类
    java 之 Map类
    java 之 迭代器
    java 之 Collection类
    java 之日期时间操作
    java 之String类
    如何把ASP.NET MVC项目部署到本地IIS上
    [工具]Visual Studio
    [MVC][Shopping]Copy Will's Code
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12343015.html
Copyright © 2011-2022 走看看