我正在从C编程语言书中运行以下程序:
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
Run Code Online (Sandbox Code Playgroud)
要么
#include<stdio.h>
int main(){
int c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,我得到一个无法解释的行为.如果从在下面的序列中的命令行I输入字符:{'h', 'e', 'l', 'l', 'o', '\n', '^D'}然后我得到打印到屏幕以下响应:hello,之后\n被输入,并且该程序退出一旦^D在输入.
但是,当我按如下方式更改序列时:{'h', 'e', 'l', 'l', 'o', '^D'}然后我将以下响应打印到屏幕:hello,但程序不会退出.我进入后不应该退出^D吗?我必须^D第二次进入该计划才能退出.或者程序仅在我输入^D以下内容后退出\n.我不明白为什么不管我何时进入该计划都不会退出^D.有什么想法吗?
我在UNIX系统上运行.
Mar*_*ian 18
当您键入^ D('传输结束')时,输入缓冲区将被刷新,您输入的所有内容将被发送到您的程序(实际上不会发送^ D字符).它类似于键入换行符,但在这种情况下,也会发送换行符本身.程序在读取零个字符时将其输入视为已关闭.当您键入换行符后跟^ D或连续两个^ D时会发生这种情况.
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |