#include <stdio.h>
int main() {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
}
当EOF(ctrl + z)处于新行时,但输入时,此工作正常
是:
blabla ^ z
它不起作用。
当我调试程序时,它告诉我输入“^ z”(^ z = EOF)保存为26,
但是当输入^ z在新行中时,它将保存为-1。
为什么?
如果有什么不清楚的话:
它被保存在变量c中,并且不起作用意味着它不会终止while循环,只有当输入^ z被放入一个新行时它才会撕掉循环
即时通讯使用Windows
答案 0 :(得分:0)
也许你使用它错了,CTRL + z符号不会发送到getchar()函数(它会给出一个EOF),而是发送给你运行程序的系统(例如它会“停止”程序)。
尝试
<ItemsControl x:Class="MyItemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!-- Arrange all items vertically, distribute the space evenly -->
<UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- Templates and other stuff ... -->
</ItemsControl>
在任何情况下你都看到输出'W'吗? (在我的情况下,特别是当使用新的线?)时,我得到“停止”(在UNix系统上,CTRL+Z is used to suspend a process)。
On Windows system, the answer has already been given on SO:
在一行结束时,点击^ z(或linux上的^ d)不会导致 终端驱动程序发送EOF。它只会让你冲洗缓冲区 过程(没有\ n)。
在行的开头按^ z(或linux上的^ d)解释 终端为“我想发出EOF信号”。