C語言ungetc()函式:把字元退回到輸入流

2puT發表於2016-07-15
標頭檔案:#include<stdio.h>

ungetc()函式用於將一個字元退回到輸入流中,這個退回的字元會由下一個讀取檔案流的函式取得。其原型如下:
    int ungetc(char c,  FILE *stream);

【引數】c為要退回的字元,stream為要退回的輸入流。

【返回值】若該函式執行成功,返回非零值;否則,返回0。

舉例:下面的示例演示了ungetc()函式的使用,使用該函式將字元退回到輸入流中,其程式碼如下。
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. int main()
  4. {
  5. int i=0;
  6. char ch;
  7. puts("Input an integer followed by a char:");
  8. // 讀取字元直到遇到結束符或者非數字字元
  9. while((ch = getchar()) != EOF && isdigit(ch))
  10. {
  11. i = 10 * i + ch - 48; // 轉為整數
  12. }
  13. // 如果不是數字,則放回緩衝區
  14. if (ch != EOF)
  15. {
  16. ungetc(ch,stdin); // 把一個字元退回輸入流
  17. }
  18. printf("\n\ni = %d, next char in buffer = %c\n", i, getchar());
  19. system("pause");
  20. return 0;
  21. }
輸出結果:
123ab↙
i *= 123, next char in buffer = a

程式開始執行while迴圈,直到遇到非數字或者結束標識才能往下執行,緊接著判斷是不是結束標識,如果不是結束標識則退回鍵盤緩衝區,在最後輸出的時候使用getch()從緩衝區再次獲取該字元輸出。因為while中使用的是函式getchar(), 所以需要輸入字元後按Enter鍵。

相關文章