键盘输入ctrl+z作用是什么?

昨夜书_ 2017-12-05 02:01:12
经过几次测试发现:

只有当一行第一个字符是ctrl+z时会结束输入;

但ctrl+z前面还有其它字符时按回车,它会忽略ctrl+z后面的字符,并且不结束输入,会将下一行的输入连接起来,而且在两行内容间输出了一个箭头?


从键盘输入的ctrl+z到底是什么,看书上说是EOF,那就应该可以作为标准输入缓冲区结束标志是不是?
难道从键盘输入的ctrl+z不是EOF?

恳请详解。
...全文
1301 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨夜书_ 2017-12-05
  • 打赏
  • 举报
回复
引用 3 楼 赵4老师的回复:
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\internal.h" 
      69: #define CTRLZ 26        /* ctrl-z means eof for text */
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\read.c"
     277:                     if (*p == CTRLZ) {
     478:                     if (*pu == CTRLZ) {
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\write.c"
     494:                 else if ((_osfile(fh) & FDEV) && *(char *)buf == CTRLZ)
嗷嗷,多谢。能问下为什么ctrl+z前面有字符的时候,它就会忽略这一行ctrl+z后的字符,并且按回车也不结束输入呢?(而且出现了图里的箭头……)
赵4老师 2017-12-05
  • 打赏
  • 举报
回复
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\internal.h" 
      69: #define CTRLZ 26        /* ctrl-z means eof for text */
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\read.c"
     277:                     if (*p == CTRLZ) {
     478:                     if (*pu == CTRLZ) {
File: "C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\write.c"
     494:                 else if ((_osfile(fh) & FDEV) && *(char *)buf == CTRLZ)
昨夜书_ 2017-12-05
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩的回复:
ctrl+z是Windows下输入EOF的命令。输入EOF,首先程序里需要有判断输入的是否位EOF。所以,如果输入Ctrl+z没有效果,要看程序里有没有判断EOF 建议贴出你的代码
就很简单的定义了一个字符数组,用gets()和puts()输入输出字符串,没别的了。图里最后一行是输出的。 我还了解到是不是和什么阻塞和非阻塞有关?
自信男孩 2017-12-05
  • 打赏
  • 举报
回复
ctrl+z是Windows下输入EOF的命令。输入EOF,首先程序里需要有判断输入的是否位EOF。所以,如果输入Ctrl+z没有效果,要看程序里有没有判断EOF 建议贴出你的代码

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧