2011-05-21 16 views
2

int ungetc(int c, FILE *fp)推字符c回FP,並返回無論是C,或EOF爲一個錯誤。putc和ungetc有什麼區別?

其中int爲putc(int c, FILE *fp)將字符c寫入文件fp並返回寫入的字符或EOF發生錯誤。

//這是給K &陳述R.我發現自己困惑,因爲putc()可以getc後即可使用,並且可以作爲ungetc工作。那麼在具體定義ungetc()時有什麼用處。

回答

10

putc寫的東西輸出,所以它出現在屏幕上,或文件到您重定向輸出。

ungetc把東西放回輸入緩衝區,所以下次你打電話getc(或fgetc等),這就是你會得到什麼。

您正常使用putc寫輸出。當你閱讀輸入時,你通常使用ungetc,當你讀到一個不能成爲當前「某事」的角色時,你知道你已經達到了某種結果的唯一方式。例如,你正在閱讀並轉換一個整數,你繼續閱讀除了數字以外的其他東西 - 然後你將這個非數字字符作爲下一個來自這個數據流的東西處理。

+0

thanx for this explanation answers .. :) – 2011-05-21 05:40:10

0

如果您在流fpungetc,然後你再做一個getc,你回來,你只是把相同的字符,如果你做putc的「流繼續前進」,並隨後getc會得到什麼是後,如果有什麼... 的getcungetc用於「偷看進取」,並把它放回去,如果在處理字符。例如一些特殊情況下,

+0

只是putc將之後,如果不會,我得到我只是把...因爲它僅僅是其中的文件指針指向...不是它相同的字符我做GETC? – 2011-05-21 05:34:04

+0

是,文件指針該字符,這是輸出緩衝器,確實(如傑裏說)在回輸入緩衝區ungetc函數放後putc將移動到(他們可能是相同的,這就是我是假設) – 2011-05-21 05:41:11

+0

雅所以主要區別在於ungetc放在輸入緩衝區中,而putc將它放在輸出緩衝區中...... – 2011-05-21 05:45:14

2

ungetc使用打開的流進行讀取,並且不會修改原始文件。 putc在爲寫入打開的流上工作,實際上將字節寫入文件。