C語言ungetc()函式:把字元退回到輸入流
阿新 • • 發佈:2019-02-19
標頭檔案:#include<stdio.h>
ungetc()函式用於將一個字元退回到輸入流中,這個退回的字元會由下一個讀取檔案流的函式取得。其原型如下:
int ungetc(char c, FILE *stream);
【引數】c為要退回的字元,stream為要退回的輸入流。
【返回值】若該函式執行成功,返回非零值;否則,返回0。
舉例:下面的示例演示了ungetc()函式的使用,使用該函式將字元退回到輸入流中,其程式碼如下。
123ab↙
i *= 123, next char in buffer = a
程式開始執行while迴圈,直到遇到非數字或者結束標識才能往下執行,緊接著判斷是不是結束標識,如果不是結束標識則退回鍵盤緩衝區,在最後輸出的時候使用getch()從緩衝區再次獲取該字元輸出。因為while中使用的是函式getchar(), 所以需要輸入字元後按回車鍵。
ungetc()函式用於將一個字元退回到輸入流中,這個退回的字元會由下一個讀取檔案流的函式取得。其原型如下:
int ungetc(char c, FILE *stream);
【引數】c為要退回的字元,stream為要退回的輸入流。
【返回值】若該函式執行成功,返回非零值;否則,返回0。
舉例:下面的示例演示了ungetc()函式的使用,使用該函式將字元退回到輸入流中,其程式碼如下。
- #include<stdio.h>
- #include<ctype.h>
- int main()
- {
- int i=0;
- char ch;
- puts("Input an integer followed by a char:"
- // 讀取字元直到遇到結束符或者非數字字元
- while((ch = getchar()) != EOF && isdigit(ch))
- {
- i = 10 * i + ch - 48; // 轉為整數
- }
- // 如果不是數字,則放回緩衝區
- if (ch != EOF)
- {
- ungetc(ch,stdin); // 把一個字元退回輸入流
- }
- printf("\n\ni = %d, next char in buffer = %c\n", i, getchar());
- system("pause");
- return
- }
123ab↙
i *= 123, next char in buffer = a
程式開始執行while迴圈,直到遇到非數字或者結束標識才能往下執行,緊接著判斷是不是結束標識,如果不是結束標識則退回鍵盤緩衝區,在最後輸出的時候使用getch()從緩衝區再次獲取該字元輸出。因為while中使用的是函式getchar(), 所以需要輸入字元後按回車鍵。