C语言中,怎么用EOF结束输入

写了这样的语句ch=getchar())!=EOF,但运行后一直都无法结束输入。... 写了这样的语句ch=getchar())!=EOF,但运行后一直都无法结束输入。 展开
 我来答
乌浦泽65
高粉答主

推荐于2019-09-26 · 每个回答都超有意思的
知道答主
回答量:33
采纳率:0%
帮助的人:5605
展开全部

windows:

首先在最后一行结束后(此时未换行)输入ENTER键,新起一行,再输入ctrl+z,再输入时ENTER键即可。 

Linux:

直接按CTRL+D快捷键

示例:

#include<iostream>

using namespce std;

void main()

{

int  a;

while(cin >>a)

{

;//循环输入的代码块

}

}

扩展资料:

C语言中,当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件的结束标志。为解决这个问题,ANSI C提供一个feof函数,用来判断文件是否结束。

如果遇到文件结束,函数feof(fp)的值为1,否则为0.feof函数既可用以判断二进制文件是否结束,也可以用以判断文本文件是否结束。

例如:编写程序,用于把一个文本文件(源文件)复制到另一个文件(目的文件)中。源文件名为file_a.dat,目的文件名为file_b.dat。程序如下:

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

void filecopy(FILE *,FILE *);

main ( )

{

FILE*fpin,*fpout;

fpin =fopen ("file_a.dat","r"); /*打开输入文件*/

fpout = fopen ("file_b.dat","w"); /*打开输出文件*/

filecopy( fpin,fpout ); /*把fpin所指文件中的内容输出到fpout所指文件中*/

fclose ( fpin );fclose ( fpout ); /*关闭输入输出文件*/

}

void filecopy( FILE *fpin, FILE *fpout )

{

char ch;

ch = getc ( fpin ); /*先读一次文件再去判文件是否结束*/

while ( !feof( fpin ) ) /*当未到文件末尾是进行循环*/

{

putc ( ch, fpout ); ch= getc ( fpin );} /*逐个字符进行复制*/

}

西西哩的小马甲
推荐于2019-09-18 · TA获得超过10.1万个赞
知道大有可为答主
回答量:39
采纳率:100%
帮助的人:1.8万
展开全部

不同的系统方法不同:

linux系统下,在输入回车换行后的空行位置,按 ctrl+d (先按ctrl键,不放,再按d键)。

windows系统下,在输入回车换行后的空行位置,按 ctrl+z,再回车确认。

EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1。

在C语言的头文件中对其进行了宏定义:

当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。 (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin) 的一个宏 )

扩展资料:

EOF作为文件结束符时的情况:

EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。

(1)遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+D,就可以跳出getchar(),去执行程序的其他部分;

(2)在前面输入的字符为换行符时,接着输入Ctrl+D;

(3)在前面有字符输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到文件结束符的功能。

参考资料:百度百科C语言

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
2015-09-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部
在C语言运行过程中,有时需要在终端手动输入EOF,其输入方法与操作系统有关。
1 windows系统。
实际上输入是在dos下面执行的,也就是运行时的那个黑底窗口。在windows下输入EOF需要输入CTRL+Z。
2 Linux/Unix/Mac操作系统。
在这类操作系统下,要输入EOF需要输入CTRL+D。

以上输入操作,均需要先按下CTRL键,不要抬起,再按下对应的D或Z键,抬起D或Z键,再抬起CTRL键。组合功能键的输入流程都是这样的。
在输入时,如键盘上有多个CTRL, 左右CTRL均可使用,没有区别。对于字母的输入,大小写也无关。
部分系统运行时,会不支持即时输入,这样在输入功能键后,还需要再输入回车来使系统可以接收到按键,此类现象多见于windows编译器。
如果系统支持按键回显,那么在输入成功后,会显示^Z或^D。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2017-10-06 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6428万
展开全部

EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1

在C语言的头文件中对其进行了宏定义:

libio.h:    # define EOF (-1)

当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。 (C语言中所有的输入输出操作均是按读文件的思想来设计的,或者说,是文件操作的一种特例,如getchar()就是fgetc(stdin) 的一个宏 )

int getchar() ; //从标准输入缓冲区读取一个字符,成功返回该字符的ASCII值,出错,返回EOF

那么,如何在键盘输入时,产生EOF呢? 不同的系统方法不同:

  • linux系统下,在输入回车换行后的空行位置,按 ctrl+d (先按ctrl键,不放,再按d键)

  • windows系统下,在输入回车换行后的空行位置,按 ctrl+z,再回车确认

以下代码供参考:

#include <stdio.h>
void main()
{
    int ch;
    do {
        ch=getchar();
        printf("ch=%d\n", ch ); //输出读返回的ch值,读到EOF会输出-1
    } while ( ch!=EOF );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zab20021
2010-12-28 · TA获得超过124个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:122万
展开全部
EOF如果是输入结束的话应该按CTRL+Z才行CTRL+Z = EOF
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式