windows控制台输入,默认是以文本模式打开,即使重定向输入,文本模式不变,所以输入时无法读到cr,因为windows已经把crlf转换成单个lf。

如果freopen("CON", "rb",stdin); 则可以读到cr

fgets会吸收换行,但是换行也被写入字符串

如果不要字符串,scanf("%d ",&d); gets()最好。vs2015删除gets,用gets_s即可。

首先:fgets读入的是带'\n'的字符串。也就是说,在不超过第二个参数的情况下,fgets从第三个参数(文件指针,输入流)中不断的读入字符。直到遇到'\n',并将'\n'从输入流中取出。

其次:gets函数不检测读入的字符的个数。仅仅是不断的从标准输入流(键盘)中读入字符,直到遇到'\n'。与fgets不同的是,虽然gets函数也会将'\n'从输入流中取出,但却只是取出,然后丢掉。并不保存在目标字符串中(上述代码中既是str)。

最后:scanf函数不检测读入的字符的个数。仅仅是不断的从标准输入流(键盘)中读入字符,直到遇到“空白符”。和fgets/gets不同的是,scanf从输入流中取出“空白符”。

要时刻牢记的是,'\r'是空白符,scanf函数不会读入它。但是fgets和gets函数会读取它!

http://blog.csdn.net/lanceleng/article/details/8730192

scanf

scanf会把换行留在输入缓冲区中,%s也会留下

Most of the conversion specifiers skip leading whitespace including newlines but %c does not.

格式化字符串中,大部分指令都会忽略空白(isspace),%c除外

前面加一个空格,会忽略前导空白,包括换行。

while (scanf("%c",&c)!=-1)
printf("%c",c);

多次按ctrl+Z并不结束

下面序列可以结束

ctrl+z, cr

ctrl+Z,cr

Ctrl+D

最新文章

  1. 采用UDP协议的PIC32MZ ethernet bootloader
  2. 3D旋转相册(适合新手)
  3. 据说,每一个 iOSer 都想要一张 Swift 大会门票
  4. C++模板常用使用方法介绍
  5. PLSQL_性能优化工具系列10_Automatic Database Diagnostic Monitor - ADDM
  6. SQL Server ->> 关于究竟ALTER INDEX ... REBUILD会不会导致改变索引选项和Filegroup的验证
  7. 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处
  8. HTML/W3C-WHATWG-Differences
  9. SHDP--Working with HBase(三)之HBase+Phoenix实现分页
  10. gridView行号的显示
  11. 自定义构造方法和description方法
  12. thymeleaf模板引擎shiro集成框架
  13. JavaSE中Collection集合框架学习笔记(1)——具有索引的List
  14. LAMP与LNMP架构的区别及其具体的选择说明
  15. Android开发——EditText的属性使用
  16. Python selenium巧用Javascript脚本注入解决按钮点选问题
  17. day53 鼠标事件 键盘事件 及JQuery
  18. ElasticSearch 入门
  19. Github链接及git学习心得总结
  20. JAVA常用代码

热门文章

  1. HTML5 canvas处理图片的各种效果,包括放大缩小涂鸦等
  2. SunRay4(新蕾4) 定时自动关机方案, Linux后台自动任务crontab实践
  3. ProcessBuilder 、Runtime和Process 的区别
  4. [poj2182] Lost Cows (线段树)
  5. tomcat启动超时问题
  6. 苹果微信input输入框被键盘遮挡
  7. JQ完成表格单元格顺序的上移下调
  8. Highcharts动态添加点数据
  9. App的启动过程
  10. 【java基础】成员变量和局部变量