首页 > 其他 > 详细

EOF读取字符

时间:2020-02-21 21:38:12      阅读:85      评论:0      收藏:0      [点我收藏+]

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

 

总结:两者不同的原因吗,暂时不知道

 

EOF读取字符

原文:https://www.cnblogs.com/asdfknjhu/p/12343015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!