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

写了这样的语句ch=getchar())!=EOF,但运行后一直都无法结束输入。

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 );} /*逐个字符进行复制*/

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-09-18

不同的系统方法不同:

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语言

本回答被网友采纳
第2个回答  2015-09-26
在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。
第3个回答  推荐于2017-10-06

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 );
}

第4个回答  2010-12-28
EOF如果是输入结束的话应该按CTRL+Z才行CTRL+Z = EOF本回答被提问者采纳

C语言中,怎么用EOF结束输入
首先在最后一行结束后(此时未换行)输入ENTER键,新起一行,再输入ctrl+z,再输入时ENTER键即可。Linux:直接按CTRL+D快捷键 示例:include<iostream> using namespce std;void main(){ int a;while(cin >>a){ ;\/\/循环输入的代码块 } } ...

c语言程序设计 怎么以输入EOF结束
char s[100];while(1){ if(gets(s) == NULL) break;\/\/ 当gets返回NULL时代表遇到EOF,结束输入。} 当输入为文件时,遇到文件结尾C语言可以自动识别EOF,但如果输入为命令行交互模式,那么需要手动输入EOF. 在windows平台输入EOF的方法为,同时按下ctrl和z键。如果是unix\/linux平台,则需要同时按...

C语言这题怎么用EOF结束啊
EOF结束的话,可以这样用:int n;while(scanf("%d",&n)!=EOF){ \/*add your code*\/ } 你的问题:for (i = 0; i < n; i++)for (j = 0; j < n; j++){ scanf("%d", &a[i][j]);\/*取地址*\/ }

c语言中怎么用EOF来结束数组输入
Linux ctrl + d 键入 EOF

c语言新手提问!!!关于如何输入EOF终止输入!!
windows:首先在最后一行结束后(此时未换行)输入ENTER键,新起一行,再输入ctrl+z,再输入时ENTER键即可。Linux:直接按CTRL+D快捷键 示例:include<iostream> using namespce std;void main(){ int a;while(cin >>a){ ;\/\/循环输入的代码块 } } ...

c语言中EOF的用法
include <stdio.h>int main(){char c;while((c = getchar()) != EOF){putchar(c);}return 0;}说明:在Windows上按CTRL+Z键,表示EOF。注意:EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。(1)...

C语言编写,统计输入的行数,输出用EOF结束输入.
本题中的“用EOF结束输入”是指,在结束输入之后要再输入一个结束字符(按CTRL+Z键)之后再按回车。\/\/--- include <stdio.h> int main(void){ char a;int i=0;while ((a=getchar())!=EOF)if (a=='\\n') ++i;printf("%d",i);return 0;} \/\/---...

c语言中eof的定义以及用法
在C语言中,EOF是一个常量,表示文件结束符。EOF是End of File的缩写,用于表示文件的结束。在C语言中,EOF被定义为一个整数常量,其值为-1。在C语言中,EOF常常用于判断文件是否已经读取到末尾。在读取文件时,可以使用EOF作为循环的终止条件,当读取到文件末尾时,返回EOF。例如,可以使用以下代码来...

c语言eof用法范例循环while
c语言eof用法范例循环while的方式为:在C语言中想要连续输入输出,在最后就需要使用EOF结束了,代码示例如下:#includeintmain(){inta,while(scanf("%d",&a)!=EOF){printf("%dn",a*2),}ret...c语言EOF用法-百度文库=EOF即while(scanf("%d",&n)!=EOF)中while(A)语句中的事件A是正确即...

c语言程序怎么实现"输入结束标志为EOF"?用scanf。急!
while(scanf("%d",&a)!=EOF)或者while(~scanf("%d",&a))两个是一样的,都是以文件尾(EOF)为结束标志 追问 为什么while(scanf("%d",&a)!=EOF)要打两个Ctrl+Z才会结束,而while (cin>>a)打了一个Ctrl+Z就会结束?谢谢. 本回答由提问者推荐 举报| 答案纠错 | 评论 3 2 其他...

相似回答