當前位置:首頁 » 編程語言 » feofc語言

feofc語言

發布時間: 2023-01-02 16:21:36

A. feof(fp)是什麼意思每一個字母如何解釋

feof是c語言標准庫函數,其原型在stdio.h中,其功能是檢測流上的文件結束符,如果文件結束,則返回非0值,否則返回0(即,文件結束:返回非0值,文件未結束,返回0值),文件結束符只能被clearerr()清除。(這里的檢測流上的文件結束符就相當於音效卡檢測電流信號的一個過程)

int feof(FILE *stream);

參數

流 :FILE結構的指針

注意:feof判斷文件結束是通過讀取函數fread/fscanf等返回錯誤來識別的,故而判斷文件是否結束應該是在讀取函數之後進行判斷。比如,在while循環讀取一個文件時,如果是在讀取函數之前進行判斷,則如果文件最後一行是空白行,可能會造成內存錯誤。

(1)feofc語言擴展閱讀

相關函數

getc()

功能:函數從流中返回一個字元值。

語法:int getc(FILE * stream)

返回值:整數值。

函數種類:「stdio.h」

內容說明:此函數和fgetc函數相似,但它是以一個宏來實現的。另外它將不止一次地計算流參數咖,這對通常的宏的規則來說是一個例外。getc是一個已經高度優化的函數,所以該函數是進行單個字元讀操作的最好的函數。

參考:如fputc();fgetc();putc();fopen()。

fputs()

功能:將字元串中的內容寫到指定的流中。

語法: int fputs(const char *s,FILE * stream)

返回值:整數值。

函數種類:「stdio.h」

內容說明:函數將字元串指針s所指向的字元串中的內容寫到流stream中。標志結束的空字元(NULL)不寫。函數也不另外增加一個換行符。只是輸出字元串中的所有字元。 函數操作成功時返回值為0,否則返回非0值。

如果流是以文本形式打開的,就會對有些字元進行翻譯操作。這意味著字元串可能會與文件內容之間沒有一一對應的映射關系。然而,當文件以二進制打開時,不發生字元翻譯,在字元串與文件內容之間存在一一對應的映射關系。

參考資料來源:網路-fgetc

參考資料來源:網路-feof

B. c語言feof()

第一個代碼結果是11不錯,但第二個就不是10了,應該是2——第一個代碼用fgetc讀,它把結束符也當一個字元讀取了,當然' '也被讀取了,共讀了12個,但c==' '時被否定了,num沒有增值,所以最後num是11;第二個代碼顯然只能把0123456789當一個整數來讀(遇到' '判斷為數據結束),所以一次就讀完了,之所以最後num是2,是因為一次讀完後並沒有越過文件結尾產生讀操作,所以feof不可能返回「真」,還要再讀一次才產生錯誤,所以結果是2。這里有個問題必須注意:feof這個函數不產生讀文件操作,只檢查剛剛發生的讀操作是否越過文件結尾了,所以要在邏輯上緊跟在讀操作函數之後才能正確發揮作用。從這點上說,這兩款代碼都有錯誤,應該這么寫:

(1)代碼改如下:

#include"stdio.h"
intmain(){
FILE*fp;
intnum=0;
//inta;
charc;
if((fp=fopen("D:\a.txt","r"))==NULL){
printf("打開文件時發生錯誤... ");
return0;
}
while(1){
c=fgetc(fp);
if(feof(fp))//把判斷提前到這里來,處理過了再判斷毫無意義
break;
if(c!=' '){
num++;
printf("%c ",c);
}
}
printf(" %d ",num);
fclose(fp);
return0;
}

(2)代碼改如下:

#include"stdio.h"
intmain(intargv,char*argc[]){
FILE*fp;
intnum=0;
inta;
//charc;
if((fp=fopen("D:\a.txt","r"))==NULL){
printf("打開文件時發生錯誤... ");
return0;
}
while(1){
fscanf(fp,"%d",&a);
if(feof(fp))
break;
num++;
printf("%d ",a);
}
printf(" %d ",num);
fclose(fp);
return0;
}

這樣改後前者結果就應該是10,後者結果就應該是1。相信不會有錯。——由於圖3什麼也看不清,不知你要問什麼問題,以上只是按主要題意猜答的。

C. C語言的feof()函數

feof()函數不是判斷上次讀操作是否讀到文件末尾,而是判斷當前文件指針所指向未知是否是文件末尾。和你讀沒讀沒關系。
所以即使你打開文件,沒有讀,如果文件是個空文件,那麼直接調用feof()也將返回真。

D. C語言中feof的用法疑問

feof
只是「事後」檢查,它不會改變文件流的狀態,甚至根本不會去讀文件,它只會檢查相應的
FILE
結構體的
eof
標記。某種意義上,
feof
就是面向對象中的
getter
方法。
只有別的函數從文件裡面讀東西然後因為碰到錯誤於是需要的東西沒有讀出來,才會把
對應的
FILE
結構體

eof
標記設為真。

E. C語言中的feof函數

即使文件是空的,也要再讀一次,feof函數值才會變為真。
因為只有讀出所有的數據之後,再讀一次,函數feof(fp)的返回值才為真。(請見《C語言好程序設計—從入門到進階》,人民郵電出版社,2011。)
示例:
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *fp;
int a;
if((fp=fopen("c:\\number.txt","r"))==NULL)
{
printf("文件打開失敗!\n");
exit(0);
}
fscanf(fp,"%d",&a);
while(!feof(fp)) /*等價於while(feof(fp)==0)*/
{
printf("%d ",a);
fscanf(fp,"%d",&a);
}
fclose(fp);
}

F. C語言:feof函數返回值問題

返回值0 1
0代表沒到文件尾
1代表到文件尾了
while(!feof(in))是說如果沒到文件尾就繼續 若到文件尾了 結束循環

G. C語言中的feof怎麼用

這一句:

while(!feof(p));//循環到文件結尾

把while (!feof(p)) 後面的; 去掉,否則就成死循環了

H. C語言中的feof怎麼用

feof(文件流指針)
,不到結尾返回0,否則返回1
就一個判斷狀態的函數
file
*fp=fopen。。。。
打開成功才能調用該函數
這個狀態檢測是當文件讀取函數發生讀失敗才會出現

I. c語言中feof是什麼意思

feof是一個c語言函數,既可用以判斷二進制文件又可用以判斷文本文件。feof(fp)有兩個返回值:如果遇到文件結束,函數feof(fp)的值為1,否則為0。

EOF是文件結束標志的文件。在文本文件中,數據是以字元的ASCⅡ代碼值的形式存放,ASCⅡ代碼的范圍是0到255,不可能出現-1,因此可以用EOF作為文件結束標志。

當把數據以二進制形式存放到文件中時,就會有-1值的出現,因此不能採用EOF作為二進制文件的結束標志。為解決這一個問題,ASCI C提供一個feof函數,用來判斷文件是否結束。


(9)feofc語言擴展閱讀:

feof的正確寫法:

在VC里,只有當文件位置指針(fp->_ptr)到了文件末尾,然後再發生讀/寫操作時,標志位(fp->_flag)才會被置為含有_IOEOF。然後再調用feof(),才會得到文件結束的信息。

因此,如果運行如下程序:

char c;

while(!feof(fp))

{

c = fgetc(fp);

printf("%X/n", c);

}
會發現多輸出了一個FF,原因就是在讀完最後一個字元後,fp->flag仍然沒有被置為_IOEOF,因而feof()仍然沒有探測到文件結尾。直到再次調用fgetc()執行讀操作,feof()才能探測到文件結尾。這樣就多輸出了一個-1(即FF)。

正確的寫法應該是:

char c;
c = fgetc(fp);
while(!feof(fp))
{
printf("%X/n", c);
c = fgetc(fp);
}

熱點內容
php分割文件 發布:2025-07-05 02:22:15 瀏覽:476
sql平均成績語句 發布:2025-07-05 02:11:41 瀏覽:276
java離線 發布:2025-07-05 02:11:35 瀏覽:65
php變數賦值給變數 發布:2025-07-05 02:10:56 瀏覽:557
javaequals方法 發布:2025-07-05 01:57:23 瀏覽:97
sqlsever外鍵 發布:2025-07-05 01:41:04 瀏覽:737
鳳凰衛士加密軟體 發布:2025-07-05 01:39:36 瀏覽:635
桌面軟體編程 發布:2025-07-05 01:32:17 瀏覽:992
編譯後的程序叫啥擴展名是啥 發布:2025-07-05 01:18:29 瀏覽:164
強轉編程 發布:2025-07-05 01:09:50 瀏覽:886