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

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

  • 相关阅读:
    XXX is not in the sudoers file
    git错误“无法推送一些引用到xxx"的解决方法
    mysql开启远程访问
    ubuntu 在启动器中启动webstorm和phpstorm
    ubuntu nginx卸载和安装
    基于grunt构建的前端集成开发环境
    fullPage.js
    常见的HTTP状态码
    JS随机数
    CSS3简单的动画
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12343015.html
Copyright © 2020-2023  润新知