第三章 資料的輸入和輸出 檔案

2021-10-01 02:22:32 字數 1579 閱讀 2406

遇到了一道例題如下:

【例3.6】編一程式,用於將乙個檔案中的內容顯示到螢幕上。

然後書上給出了如下的程式:

#include

#include

using namespace std;

intmain

(int argc,

char

*ar**)

ifstream in

(ar**[1]

);if(in.

fail()

)if(!in.

fail()

) in.

close()

;return0;

}

程式的執行結果如下:

學到了一些新的知識點:

int

main

(int argc,

char

*ar**[

])

命令列引數,一般是指在作業系統狀態下所輸入的命令及其引數。

argc中存放的是命令列中命令與引數的總個數,命令列中的每個引數都是乙個字串;而指標陣列ar**中分別存放著這些字串的首位址,ar**[0]是存放主函式main()所在原始檔名字字串的首位址。

如此理解的話,ar**[1]中存放的是要開啟檔案的檔名。因為要開啟乙個檔案,所以argc的值必定為2,乙個是.exe乙個是.txt。

為了把完整的檔案顯示在螢幕上,上述程式需要做一些變動,如下:

while

(in.

get(ch)

)

然後在cmd上執行,如下:

這是我自己檔案的存放路徑,需要根據自己檔案的存放路徑選擇要進入的資料夾。另外,cmd跟boxdos操作的方式差不多。

還有乙個很好玩的事情,如果上述的**寫成了如下的形式:

while

(!in.

fail()

)

執行出來的結果就會把最後一位字元重複兩次!也就是abcc

這是因為讀取檔案的指標讀取完檔案之後,已經指向空白內容,但是不知道檔案是否結束,所以只能再次讀取檔案,就造成了上述的重複事件。

解決方案是上述的用in.get(ch)判斷,或者呼叫in.peek()==eof來判斷。

peek返回的是當前指標指向的字元

while

(in.

peek()

!=eof

)

後來自己想了乙個解決方案,如下:

#include

#include

using namespace std;

intmain()

while

(fin.

get(ch)

) fin.

close()

;return0;

}

程式的執行結果如下:

第三章 三 輸入 輸出

轉換字元 引數型別 轉換結果 cchar 字元 d,iint 有符號十進位制整數 e,edouble 以指數形式輸出單 雙精度浮點數 小寫 e 說白了就是 科學計數法 如123.456 輸出1.234560e 002 fdouble 以小數形式輸出單 雙精度浮點數 g,gdouble 以 f 或 e...

第三章 資料儲存於輸入輸出

資料在計算機中以二進位制的形式來表示,通常最小單元為位元組。包含8個位。通常有常量和變數之分,常量的值不變。資料分為數值型別和字元型別,及自定義的型別。1.數值 數值又分為整型和浮點型。整型沒有小數部分。如int長度不定,short 2 long 4 unsigned int,usigned sho...

第三章 資料和C

platinum.c include int main void 程式執行中無法改變改變的數字或字元稱為常量 如示例中12.121 在程式中隨著賦值,運算等操作而改變量值的稱為變數 如變數 weight value k r 關鍵字 c90標準新增關鍵字 c99標準新增關鍵字 intsigned bo...