書上只舉了回退一個字符的例子,
另外,“如果回退多個字符,字符數不得超過已讀取的個數。”是指什麼意思。
如果回退多個字符的話,那麼函數的返回值int是什麼?
參考
ungetc
ungetc函數
注意點:
ungetc 不能連續多次調用。兩次 ungetc 調用之間必須至少有一次讀操作或者文件指針移動操作(fseek,rewind 等 ) , ungetc 只影響輸入流,而不影響與輸入流關聯的外存文件。對於以二進制方式打開的流,ungetc 會使讀指針減 1 ,如果當前位置為 0 ,則減 1 後結果 無法預測。緊跟在fscanf 後面的 ungetc 也可能會失敗,因為 fscanf 中就用到了 ungetc。Some library implementations may support this function to be called multiple times, making the characters available in the reverse order in which they were put back. Although this behavior has no standard portability guarantees, and further calls may simply fail after any number of calls beyond the first.
雖然有些類庫會支持多次調用這個函數,但是如果代碼移植的時候,可能不能保證都能執行成功
退回的是已讀取到的字符,所以退回的字符數不能超過已經讀取的。就像你去銀行取了100塊錢,你要再存進去,只能小於等於100塊。
在標准函數庫裡面,只能退回一個字符,成功後返回的是退回的字符,如果你的類庫支持退回多個,那你需要查看一下你的類庫的說明文檔。