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

RottenPi 2017-12-05 02:01:12
经过几次测试发现:

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

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


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

恳请详解。
...全文
842 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
RottenPi 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)
  • 打赏
  • 举报
回复
RottenPi 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 建议贴出你的代码
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2017-12-05 02:01
社区公告
暂无公告