導航:首頁 > 文件教程 > java文件結束符eof

java文件結束符eof

發布時間:2021-03-19 22:49:07

1. C 語言,文件結束符 EOF問題

錯在這里了。在C語言中EOF具有特定的含義,是文件結束的標志。而你在這里和getchar()放在一起,是想從鍵盤來判斷是否結束,而鍵盤輸入的字元ASCII碼就沒有EOF這個標志,所以就錯了。
while((c=getchar())!=EOF)
即使你前面定義了EOF://#define EOF -1
這也是錯的。因為所有字元的ASCII碼都是正的,根本就沒有-1這個字元。
你可以使用一個特殊的字元作為結束的標志,比如回車,那麼那就應該改成這樣的:
while((c=getchar())!=13)
回車的ASCII碼就是13。

2. 什麼叫"以文件結束符EOF結束。"

windows xp上好像是ctrl+z 就是你的程序一直可以輸入 直到遇到ctr+z才結束 如輸入3後 計算結果 繼續輸入 直到你按下ctrl+z為止

隨手寫了個 不知道是否符合要求:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
int length; // 要求的長度
do
{
double a=2.0; // 設置分子
double b=1.0; // 設置分母
double temp; // 做個交換用
double sum=0.0; // 保存和
cout << "請輸入您要計算多少項的和: " << endl;
cin >> length;
for (int i=0; i< length; i++)
{
sum+=(a/b);
temp=a;
a+=b;
b=temp;
}
cout << fixed << setprecision(6) << "前" << length
<< "項的和是: " << sum << endl;
}while(!cin.eof()); // 用ctrl+z結束

return 0;
}

3. 關於文件結束標志EOF的接收問題

是判斷scanf 函數返回的值來判斷是否到了文件結尾的.
第二個更改如下:
結束時
ctrl+z enter
ctrl+z enter

#include <stdio.h>
void main()
{
char c;
while(scanf("%c",&c)!=EOF)
{
putchar(c);
}

}
/*
#include <stdio.h>
void main()
{
char c;
while((c=getchar())!=EOF)
{
putchar(c);
}
}
*/

2008-05-17 150600 修改:
首先:請仔細閱讀我以上以前的回答,我有提及按兩次ctrl+z的問題.
另外:對於"對於第二個程序,我將Ctrl+Z的值用scanf("%c",&c);賦給c然後再判斷c!=EOF,這樣做為什麼不能正常的退出循環?"的解釋:你說這句就是相當的錯誤的,EOF是一個值,通常是-1,代表文件結束.怎麼能用scanf讀取,又怎麼能用一個char的c和它判斷相等??? 通過scanf的返回值知道是否到了文件結尾. 最重要的就是你必須要知道EOF不是一個字元!!!
最後:關於為什麼要兩次Ctrl+z ,和scanf的讀取機制有關:就是在輸入流中如果存在有可讀的字元,Ctrl+z就不會存放進輸入緩沖區。
注意你輸入的最後一個是回車,這點相當的重要。
你用int測試,那麼一個ctrl+z就ok了。這段代碼
#include <stdio.h>
void main()
{
int c;
while(scanf("%d",&c)!=EOF)
{
printf("%d",c);
}

}

4. 文件結束符EOF

哦,這個不是1樓說的那個樣子的。是文件結束的標志,事實上是-1.可以稍微修改一下樓主的程序來做證明:
while(!in.eof())
{
temp=in.get();
cout<<int(temp)<<endl;
count++;
}
這個時候,會發現在輸出count之前輸出的最後一個是-1.
但是為什麼會輸出-1(也就是文件結束符號)呢?in.eof()返回的是in裡面的EOF變數,這個變數在in讀到文件的結束符時才會變為1。也就是說,只有當in.get()讀過了eof的時候,in中的EOF變數才會編程1,in.get()才能返回1。
那為什麼按照樓主給的代碼裡面的in>>temp寫法,最後會輸出兩個c,而和get的輸出不一樣呢?這個是因為>>在處理的時候,如果碰到讀入的是文件結束符,是不會將其寫道緩存中的,那樣的話,緩存中的字元串還是在讀入eof之前的那個字元(這個代碼裡面也就是'c'),然後再賦值給temp的還是'c'了。
那如何可以比較完美的修改上面的代碼呢?對於文件輸入流來說,有一個指針指向的是當前讀的字元串的下一位,每讀一位,指針就往下移一位。就比如一個只有abc的input.txt的文件,我們現在讀完了c,那麼指針的狀態是大致是下面這個樣子:
a
b
c
EOF<--
注意,這個時候,in.eof()還不返回1,因為in這個輸入流還沒有讀EOF這個文件結束符,但是in有一個函數peek()是讀當前指針指向的這個位置的符號的。那麼如果用in.peek()==EOF來最為判斷的標准就比較好了。樓主的例子寫成
while(in.peek()!=EOF)
{
in>>temp;
cout<<temp<<endl;
count++;
}
就可以了。
順便說一句,第一段代碼裡面while的裡面再嵌一個while沒有必要吧...
還有,無論讀還是寫,最好都要養成在操作完畢調用close()關閉流的好習慣:)

5. 怎麼用flex匹配文件結尾啊!!為什麼<S><<EOF>>會報錯呀

你寫了<"//.*"> 說明要匹配文件以 //.*開頭 如果只要以"//"開頭,用 "//".* 就可以了,雙引號里的說明要完全匹配
你可以參考一下flex & bison那本書,裡面正則表達式寫得非常詳細,很推薦.

6. TC下怎麼輸入文件結束符EOF

EOF只是一個編譯器事先約定好的常量,不是用來輸入的.
至於ctrl+z在程序里就是中斷程序,一個快捷鍵而已

7. JAVA中如何通過EOF判斷1個文件末尾

1.你的問題我不知道。
2.不知道你用的是IO流讀取的么?
IO類裡面應該是沒有InputStreamReader.EOF 之類的標示
3.我有這樣一個想法。不知道適合你的程序不。
藉助他的異常機制
4.
InputStreamReader temp;
try{

temp.read()...
.....

//讀到末尾時候 拋出Eofxception.... 異常
}catch(EOFEx.....){
//只抓到,不在後台輸出堆棧信息
}finally{
//關閉 io 流
}
5.這樣抓異常 的確很危險,出錯了會不知道原因。但是打出堆棧信息
這個錯誤又是必須出的,後台會有很多信息....
6.不知道可不可行,個人意見僅供參考。

8. 我想問一下:txt文件的文件結束符EOF是不是就是回車鍵還是其他什麼東西

EOF 是 End Of File 的縮寫。
在C語言中,它是在標准庫中定義的一個宏。#define EOF (-1)
人們經常誤認為 EOF 是從文件中讀取的一個字元。
其實,EOF 不是一個字元,它被定義為是 int 類型的一個負數(-1)。
EOF 也不是文件中實際存在的內容。
EOF 也不是只表示讀文件到了結尾這一狀態(這種狀態可以用 feof() 來檢測),它還能表示 I/O 操作中的讀、寫錯誤(通常可以用 ferror() 來檢測)以及其它一些關聯操作的錯誤狀態。

9. 在JAVA中怎麼實現輸入以EOF結束

如果字來節流的話,讀取到了自-1說明到了文件尾。

int i=a.read();
while(i!=-1){
//繼續讀取
i=a.read();
}
對於讀取字元流的話,如果到了文件尾則返回null
String i=a.readLine();
while(i!=null){
//繼續讀取
i=a.readLine();
}

10. c語言,c != EOF 表示判斷該字元是否文件結束指示符,那我要輸入什麼才能讓程序判斷輸入的字元是文件結束符

按ctrl+z
這個ctrl+z 不是跟在字元串結尾的。是另起一行開頭打。比如先輸入一個absdf,然後回車,然後再輸入ctrl+z ,然後回車。。。

閱讀全文

與java文件結束符eof相關的資料

熱點內容
flash滑鼠動作代碼 瀏覽:615
微信群里的淘寶優惠券 瀏覽:406
ps文件壓縮視頻 瀏覽:758
解決win10藍屏問題 瀏覽:865
win10中怎麼連接遠程桌面連接不上 瀏覽:886
豬來了打怪怎麼升級 瀏覽:74
統達慢走絲編程如何先開粗在精修 瀏覽:351
win10桌面文件文字黑底 瀏覽:438
雲流網路不能用了 瀏覽:26
數控普通車床如何編程序 瀏覽:210
linuxbash禁用 瀏覽:315
手機迅雷下載的文件在哪裡小米 瀏覽:280
文件隱藏加密軟體 瀏覽:869
近似熵和樣本熵代碼 瀏覽:481
et文件如何導入3d 瀏覽:59
截圖怎麼重命名js 瀏覽:40
javastring的編碼 瀏覽:413
騎砍的補丁放哪個文件夾 瀏覽:857
u盤文件名顯示recycler 瀏覽:700
iphone4s改微信提示音 瀏覽:215

友情鏈接