㈠ c语言编程中的EOF是什么
在计算机术语缩写通常为 EOF,在操作系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。 在 C语言,或更精确地说成 C标准函式库,档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF 会在编译原始码前展开实际值给预处理器。 C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。 例如: #include <stdio.h> int main() { int n; int array[25]; while (scanf("%d",&n)!=EOF) { for (int i=0; i<n; i++) scanf("%d",array+i); for (int i=0; i<n; i++) printf ("%d ",array[i]); } return 0; }
㈡ EOF是什么类型的量C语言问题
概念在C语言中,或更精确地说成C标准函数库中表示文件结束符(endoffile)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
应用档案存取或其它I/O功能可能传回等于象征符号值(巨集)EOF指示档案结束的情形发生。实际上EOF的值通常为-1,但它依系统有所不同。巨集EOF会在编译原始码前展开实际值给预处理器。C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
例如:
#include<stdio.h>intmain(void)
{intn,i;intarray[25];
while(scanf("%d",&n),n!=EOF)//while(scanf("%d",&n)!=EOF)也行
{for(i=0;i<n;i++)
scanf("%d",array+i);
for(i=0;i<n;i++)
printf("%d",array[i]);}
return0;}
在UNIX中,EOF表示能从交互式shell(终端)送出Ctrl+D(习惯性标准)。在微软的DOS与Windows中能送出Ctrl+Z。在某些例子处理纯文字档案或从"字符设备"读入资料,微软MS-DOS的shell或系统程序会加入ASCIIControl-Z字符到磁盘档案结束处(尽管基本核心MSDOS.SYS档案写入呼叫从未附加Control-Z)。这是向下相容于一些奇特的CP/M功能,从CP/M档案系统只能就记录的档案长度分配多少128位元"记录"。MS-DOS档案系统从一开始就能精确的记录档案的位元长度。ASCII控制字符在字符串流是out-of-band不可打印字符。通常表可读的助忆码。在控制台要输入eof的话按ALT+65535就可以了与feofC语言中,当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件的结束标志。为解决这个问题,ANSIC提供一个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>
voidfile(FILE*,FILE*);
main()
{FILE*fpin,*fpout;
fpin=fopen("file_a.dat","r");/*打开输入文件*/
fpout=fopen("file_b.dat","w");/*打开输出文件*/file(fpin,fpout);/*把fpin所指文件中的内容输出到fpout所指文件中*/
fclose(fpin);fclose(fpout);/*关闭输入输出文件*/}
voidfile(FILE*fpin,FILE*fpout){charch;ch=getc(fpin);/*先读一次文件再去判文件是否结束*/while(!feof(fpin))/*当未到文件末尾是进行循环*/{putc(ch,fpout);ch=getc(fpin);}/*逐个字符进行复制*/}}
2VbEOF函数编辑返回一个数值(整数类型Integer),它包含(布尔值Boolean值True),表明已经到达为Random(Open语句方法)或顺序Input(Open语句方法)打开的文件的结尾。语法EOF(filenumber)必要的filenumber参数是一个Integer,包含任何有效的文件号。说明EOF(EndOfFile)使用EOF是为了避免因试图在文件结尾处进行输入而产生的错误。直到到达文件的结尾,EOF函数都返回False。对于为访问Random或Binary而打开的文件,直到最后一次执行的Get语句无法读出完整的记录时,EOF都返回False。
㈢ c语言中EOF的用法
EOF其实是整数-1,用于从文件读取数据的时候表示已经超越文件末尾这种错误状态。如果IO操作的结果是EOF,一般就意味着这次IO是失败的。
㈣ C语言 EOF是什么
这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。 int c; while ((c = fgetc(fp)) != EOF) { putchar (c); }很自然地,我就以为,每个文件的结尾处,有一个叫做EOF的特殊字符,读取到这个字符,操作系统就认为文件结束了。但是,后来我发现,EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。 #define EOF (-1)于是,我就困惑了。如果EOF是一个特殊字符,那么假定每个文本文件的结尾都有一个EOF(也就是-1),还是可以做到的,因为文本对应的ASCII码都是正值,不可能有负值。但是,二进制文件怎么办呢?怎么处理文件内部包含的-1呢?这个问题让我想了很久,后来查了资料才知道,在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。至于系统怎么知道文件的结尾,资料上说是通过比较文件的长度。所以,处理文件可以写成下面这样: int c; while ((c = fgetc(fp)) != EOF) { do something }这样写有一个问题。fgetc()不仅是遇到文件结尾时返回EOF,而且当发生错误时,也会返回EOF。因此,C语言又提供了feof()函数,用来保证确实是到了文件结尾。上面的代码feof()版本的写法就是: int c; while (!feof(fp)) { c = fgetc(fp); do something; }但是,这样写也有问题。fgetc()读取文件的最后一个字符以后,C语言的feof()函数依然返回0,表明没有到达文件结尾;只有当fgetc()向后再读取一个字符(即越过最后一个字符),feof()才会返回一个非零值,表示到达文件结尾。所以,按照上面这样写法,如果一个文件含有n个字符,那么while循环的内部操作会运行n+1次。所以,最保险的写法是像下面这样: int c = fgetc(fp); while (c != EOF) { do something; c = fgetc(fp); } if (feof(fp)) { printf("\n End of file reached."); } else { printf("\n Something went wrong."); }除了表示文件结尾,EOF还可以表示标准输入的结尾。 int c; while ((c = getchar()) != EOF) { putchar(c); }但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。(顺便提一句,Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程。)那么,如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了。(完)
㈤ C语言中 EOF的十进制值是
#include <stdio.h>
#include<stdlib.h>
int main()
{
int i=EOF;
printf("%d\n",i);
system("pause");
}
对,-1;
㈥ C语言如何输入EOF
windows:
首先在最后一行结束后(此时未换行)输入ENTER键,新起一行,再输入ctrl+z,再输入时ENTER键即可。
Linux:
直接按CTRL+D快捷键
示例:
#include<iostream>
using namespce std;
void main()
{
int a;
while(cin >>a)
{
;//循环输入的代码块
}
}
(6)c语言eof值扩展阅读:
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 file(FILE *,FILE *);
main ( )
{
FILE*fpin,*fpout;
fpin =fopen ("file_a.dat","r"); /*打开输入文件*/
fpout = fopen ("file_b.dat","w"); /*打开输出文件*/
file( fpin,fpout ); /*把fpin所指文件中的内容输出到fpout所指文件中*/
fclose ( fpin );fclose ( fpout ); /*关闭输入输出文件*/
}
void file( FILE *fpin, FILE *fpout )
{
char ch;
ch = getc ( fpin ); /*先读一次文件再去判文件是否结束*/
while ( !feof( fpin ) ) /*当未到文件末尾是进行循环*/
{
putc ( ch, fpout ); ch= getc ( fpin );} /*逐个字符进行复制*/
}
㈦ c语言中!=EOF是什么意思
EOF为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。
DO while notEOF(1)解释:判断当eof(1)的值为true时停止do循环。
使用EOF是为了避免因试图在文件结尾处进行输入而产生的错误。
直到到达文件的结尾,EOF函数都返回False。对于为访问Random或Binary而打开的文件,直到最后一次执行的Get语句无法读出完整的记录时,EOF都返回False。
(7)c语言eof值扩展阅读:
EOF(filenumber):必要的filenumber参数是一个Integer,包含任何有效的文件号
EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后。
BOF指示当前记录位置位于 Recordset 对象的第一个记录之前。
EOF一般是指结尾,比如:SQL中指针到最后一个 Rs.EOF = True 时,eof是判断SQL取出来的记录是否到末尾了;而bof是判断是不是在记录最前面。
㈧ C语言中EOF是什么意思
eod 是end of file的缩写 。
你在用函数读入文件数据的时候,函数总会返回一个状态,是读取成功还是失败,那么这个状态怎么表示呢,所以就约定俗成定义一个标识符表示这个状态,就有了EOF。
scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。
所以,这个循环,将是一个死循环。
(8)c语言eof值扩展阅读:
EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。
在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
㈨ c程中EOF值是多少啊
End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。
在 C语言,或更精确地说成 C标准函式库,档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF 会在编译原始码前展开实际值给预处理器。
参考资料: http://ke..com/view/56074.htm