網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2015-07-19, 05:30 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,058
預設 有關函式 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.
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2015-07-19, 09:19 PM
best-url 的頭像
best-url best-url 目前離線
站務管理
 
註冊日期: 2003-08-11
住址: IDN Club
文章: 9,925
發送 MSN 消息給 best-url
預設

其實while()並沒有遞增或遞減的功能,
它是一個條件式迴圈,
功能是:「括號()內的條件如果成立的話,執行後一行的程式碼」。
在這個例子裡,之所以可以有遞增或遞減的功能,
是因為條件式中的括號(x<10)內的x<10條件剛好持續成立,
在資訊的語言裡面就是:「括號()內的布林值為真,迴圈就會一直執行」。
這裡getc()之所以有類似遞增或遞減這類持續執行的效果,
因為getc()實作成:會按順序取得檔案的字元,
只要有取到字元就會回傳值為「真」的布林值,
所以getc()在檔案還沒結束前,條件會一直成立,
迴圈會持續取值!
回覆時引用此篇文章
  #3  
舊 2015-07-19, 10:42 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,058
預設

引用:
作者: best-url 查看文章
其實while()並沒有遞增或遞減的功能,
它是一個條件式迴圈,
功能是:「括號()內的條件如果成立的話,執行後一行的程式碼」。
在這個例子裡,之所以可以有遞增或遞減的功能,
是因為條件式中的括號(x<10)內的x<10條件剛好持續成立,
在資訊的語言裡面就是:「括號()內的布林值為真,迴圈就會一直執行」。
這裡getc()之所以有類似遞增或遞減這類持續執行的效果,
因為getc()實作成:會按順序取得檔案的字元,
只要有取到字元就會回傳值為「真」的布林值,
所以getc()在檔案還沒結束前,條件會一直成立,
迴圈會持續取值!
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #4  
舊 2015-07-19, 11:48 PM
best-url 的頭像
best-url best-url 目前離線
站務管理
 
註冊日期: 2003-08-11
住址: IDN Club
文章: 9,925
發送 MSN 消息給 best-url
預設

引用:
作者: 哈啦 查看文章

目前我是 B cup

如果錢存夠了, 我會弄成 D 的

此篇文章於 2015-07-19 11:52 PM 被 best-url 編輯。
回覆時引用此篇文章
  #5  
舊 2015-07-19, 11:54 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,058
預設

引用:
作者: best-url 查看文章
千萬別客氣...

我連什麼意思都嗯哉啦
豪哥能幫忙問並且得到答案,功德不可限量也。
佛曰:
若三千大千世界中,所有諸須彌山王,如是等七寶聚,有人持用布施。若人以此般若波羅蜜經,乃至四句偈等,受持、讀誦,為他人說,於前福德,百分不及一,百千萬億分,乃至算數譬喻所不能及。
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
回覆


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 06:37 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.