① c語言中,怎麼用EOF結束輸入
windows:
首先在最後一行結束後(此時未換行)輸入ENTER鍵,新起一行,再輸入ctrl+z,再輸入時ENTER鍵即可。
Linux:
直接按CTRL+D快捷鍵
示例:
#include<iostream>
using namespce std;
void main()
{
int a;
while(cin >>a)
{
;//循環輸入的代碼塊
}
}
(1)c語言以文件結束符作為結尾擴展閱讀:
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 );} /*逐個字元進行復制*/
}
② 20分c語言文件結束EOF(-1)
在c語言中經常用EOF和feof()來判斷文件的結束,現將有關用法總結如下: 定義 EOF是End Of File 的縮寫,是c語言中標准庫中定義的宏,定義為:#define EOF (-1); feof() 用於測試流文件的結束,有宏和函數兩種定義:宏定義: #define feof(_stream) ((_stream)->_flag & _IOEOF),其中_IOEOF的為:#define _IOEOF 0x0010函數定義:int feof( FILE *stream );說明 EOF的值為-1,是int類型數據,在32位系統中,可以表示為0xFFFFFFFF; EOF 不是一個字元,也不是文件中實際存在的內容。EOF不但能表示讀文件到了結尾這一狀態,它還能表示 I/O 操作中的讀、寫錯誤(可以用 ferror() 來檢測)以及其它一些關聯操作的錯誤狀態; feof()只用於測試流文件的結束,當到達結尾時,返回非0;當文件內部位置指針指向文件結束時,並未立即置位FILE結構中的文件結束標記,只有再執行一次讀文件操作,才會置位結束標志,此後調用feof才會返回為真。 函數如fgetc或getc返回EOF並不一定表示文件結束,當讀取文件出錯時也會返回EOF,僅憑返回-1就認為文件結束是錯誤的;正因為如此,我們需要feof()來判斷文件是否結束,當然用feof()來判斷文件結束時也需要判斷讀取操作是否出錯,這時可以用ferror()來判斷,當其為真時表示有錯誤發生。在實際的程序中,應該每執行一次文件操作,就用用ferror函數檢測是否出錯。 舉例 假設文件指針fp指向某個文件,文件中有字元串「hello」,下面的代碼將輸出hello外,還將輸出一個結束字元EOF(EOF是fgetc函數的返回值,並不是文件中存在EOF):view plain to clipboardprint?int c=0; while(!feof(fp)) { int c=fgetc(fp); printf("%c:\t%x\n",c,c); } int c=0; while(!feof(fp)) { int c=fgetc(fp); printf("%c:\t%x\n",c,c); } 其原因就是當內部指針指向結尾時,還要執行一次讀操作,文件結束標記才置位,而下面的代碼將只輸出「hello」不輸出文件結束符:view plain to clipboardprint?int c; c=fgetc(fp); while(!feof(fp)) { printf("%c:\t%x\n",c,c); c=fgetc(fp); } int c; c=fgetc(fp); while(!feof(fp)) { printf("%c:\t%x\n",c,c); c=fgetc(fp); } 當文件內部指針指向結束位置時,先執行一次讀操作,置位文件結束標記,while循環立即結束。 需要注意的幾點 (1) 位元組的讀取和寫入 fgetc或getc返回一個int類型數據,在正常的情況下, fgetc或getc以 unsigned char 的方式讀取文件流, 擴張為一個整數,並返回. 換言之, fgetc 從文件流中取一個位元組, 並加上24個零,成為一個小於256的整數,然後返回。view plain to clipboardprint?int c; while ((c = fgetc (rfp))!= -1) // -1就是 EOF fputc (c, wfp); int c; while ((c = fgetc (rfp))!= -1) // -1就是 EOF fputc (c, wfp); 在正常讀取的情況下, 上述fgetc函數返回的整數均小於256, 即0x0~0xFF. 而讀不出 0xFFFFFFFF;而寫入時fputc 中的 c 雖然是整數, 但在 fputc 將其寫入文件流之前, 又把整數的高24位去掉了, 所以如果用fputc把 0xFFFFFFFF 往文件里頭寫, 高24位被屏蔽,寫入的將是 0xFF. (2) fgetc返回值的類型(以(1)中的代碼為例) fgetc()返回類型為int,我們可以將其返回值賦給一個int類型變數,如(1)中的代碼,即使是遇到字元0xFF(blank的ascii碼,不是EOF),while循環也不會結束,因為0xFF會被轉化0x000000FF,顯然這與0xFFFFFFFF(EOF)是不相等的,這時能完成正確復制; 如果用一個char 類型的變數c 來接收fgetc()的返回值,會出現什麼情況? 假定下一個讀取的字元為0xFF 則:char c = fgetc (rfp); // fgetc(rfp)的值為 0x000000FF, 然後強制轉化為char類型:c = 0xFFwhile(c != EOF) ; // 字元與整數比較? c 被帶符號(signed)擴展為0xFFFFFFFF,條件成立,文件復制提前退出,故遇到空格字元時就退出,不能完成復制; 如果將c 定義為unsigned char,當讀到文件末尾,返回 EOF 也就是 -1 時:unsigned char c = fgetc (rfp);// fgetc (rfp)的值為EOF,即-1,即0xFFFFFFFF,然後強制轉化為uchar類型, c=0xFFwhile( c!= -1) ; // c 被擴展為 0x000000FF, 永遠不會等於 0xFFFFFFFF,所以這次雖然能正確復制 0xFF, 但卻不能判斷文件結束. 事實上,在 c 為 uchar 時,c != -1 是永遠成立的! 因此,只能將c定義成int類型的變數,這樣才與fgetc返回類型一致
③ C語言里的EOF(結束程序)怎麼用
在C語言中,或更精確地說成C標准函數庫中表示文件結束符(end of file)。在while循環中以EOF作為文件結束標志,這種以EOF作為文件結束標志的文件,必須是文本文件。在文本文件中,數據都是以字元的ASCII代碼值的形式存放。
一般EOF的值為-1,ASCII代碼值的范圍是0~255,不可能出現-1,因此可以用EOF作為文件結束標志。
EOF在windows對應的按鍵是CTRL+Z鍵,在linux系統上對應的按鍵是CTRL+D。比如下面的代碼:
#include<stdio.h>
intmain()
{
intc;
while((c=getchar())!=EOF)
putchar(c);
return0;
}
運行程序按CTRL+Z鍵,即會顯示「^Z",再次按回車鍵即可退出程序。
④ eof在c語言中表示什麼
eof在c語言中表示文件結束符。在while循環中以EOF作為文件結束標志,這種以EOF作為文件結束標志的文件,必須是文本文件。
在文本文件中,數據都是以字元的ASCII代碼值的形式存放。ASCII代碼值的范圍是0~127,不可能出現-1,因此可以用EOF作為文件結束標志。
檔案存取或其它 I/O 功能可能傳回等於象徵符號值 (巨集) EOF 指示檔案結束的情形發生。實際上 EOF 的值通常為 -1,但它依系統有所不同。巨集 EOF會在編譯原始碼前展開實際值給預處理器。
C語言中,EOF常被作為文件結束的標志。還有很多文件處理函數處錯誤後的返回值也是EOF,因此常被用來判斷調用一個函數是否成功。
(4)c語言以文件結束符作為結尾擴展閱讀
在 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就可以。
⑤ C語言三個結束符有什麼不同 EOF 『\0』 '\n'
EOF(End of file)是知C/C++裡面的宏定義,具體定義式是#define EOF -1,表示的是文件的結束標志,值等於-1,一般用在文件讀取的函數裡面,比如fscanf fgetc fgets等,一旦讀取到文件最後就返回EOF標志並結束函數調用。
'