#1
|
||||
|
||||
有關函式 getc()的原理疑問
有關函數 getc() 的原理。如下例:
FILE *fp; char ch; fp=fopen("test.txt","w"); while((ch=getc(fp))!=EOF) //如果未達檔尾 printf("%c",ch);//一字一字印出來 fclose(fp); return 0; 現在有個不解之處,就是一般的while()用法,都會有個遞增或遞減的步驟,如下: while(x<10) { printf("%d",x); x++; } 但上述的例子中並無這個條件,但卻能一字一字的印出 test.txt 的內容,請問是為什麼?我目前的理解是 getc()本身就有自動遞增的功能? 其他類似的如 putc()則似乎就是只能印一個就不再繼續,除非有遞增方法寫出來。 thanks. |
#2
|
||||
|
||||
其實while()並沒有遞增或遞減的功能,
它是一個條件式迴圈, 功能是:「括號()內的條件如果成立的話,執行後一行的程式碼」。 在這個例子裡,之所以可以有遞增或遞減的功能, 是因為條件式中的括號(x<10)內的x<10條件剛好持續成立, 在資訊的語言裡面就是:「括號()內的布林值為真,迴圈就會一直執行」。 這裡getc()之所以有類似遞增或遞減這類持續執行的效果, 因為getc()實作成:會按順序取得檔案的字元, 只要有取到字元就會回傳值為「真」的布林值, 所以getc()在檔案還沒結束前,條件會一直成立, 迴圈會持續取值! |
#3
|
||||
|
||||
|
#4
|
||||
|
||||
__________________
✭ Sell.pro ✭ IDNs.sell ✭ New gTLDs ✭ ✭ 南京城.com ✭ 購買.com ✭ 学英文.com ✭ 装璜.com ✭ 芸妓.com ✭ 性产业.com ✭ ✭ 新闻.tv ✭ 报纸.net ✭ 教師.net ✭ 贸易.net ✭ 芸術.net ✭ 鮮花.net ✭ にほん.net ✭ © | €.net | ฿.com | ₡.com | ₢.com | ℗ | ₤.net | ₦.com | ₮.com | ₯.com | ® 此篇文章於 2015-07-19 11:52 PM 被 best-url 編輯。 |