程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 比較C說話中getc()函數和ungetc()函數的應用

比較C說話中getc()函數和ungetc()函數的應用

編輯:關於C++

比較C說話中getc()函數和ungetc()函數的應用。本站提示廣大學習愛好者:(比較C說話中getc()函數和ungetc()函數的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是比較C說話中getc()函數和ungetc()函數的應用正文


C說話getc()函數:從流中讀取字符
頭文件:

#include <stdio.h>

函數getc()用於從流中取字符,其原型以下:

  int getc(FILE *stream);

【參數】參數*steam為要從中讀取字符的文件流。

【前往值】該函數履行勝利後,將前往所讀取的字符。

【解釋】若從一個文件中讀取一個字符,讀到文件尾而有數據時便前往EOF。getc()與fgetc()感化雷同,但在某些庫中getc()為宏界說,而非真實的函數。

【實例】上面的示例演示了getc()函數的應用,在法式中采取該函數從尺度輸出掌握台中讀取字符,代碼以下。

#include <stdio.h> //引入尺度輸出輸入庫
void main( ) {
  char ch;
  printf ("Input a character: ");  //輸出提醒信息
  ch = getc(stdin); // 從尺度輸出掌握台中讀取字符
  printf ("The character input was: '%c'\n", ch); // 輸入字符
}

運轉上述法式,起首聲明一個用於保留所取字符的變量;然後輸 出提醒信息,吸收從尺度輸出掌握台按下的隨意率性鍵,並將該字符輸入到掌握台。

應用getc()從文件中讀取字符串,代碼以下。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
  int ch;
  int len;
  int i=0;
  FILE* fstream;
  char msg[100] = "Hello!I have read this file.";
  fstream=fopen("test.txt","at+");
  if(fstream==NULL)
  {
    printf("read file test.txt failed!\n");
    exit(1);
  }
  /*getc從文件流中讀取字符*/
  while( (ch = getc(fstream))!=EOF)
  {
    putchar(ch);
  }
  putchar('\n');
  len = strlen(msg);
  while(len>0)/*輪回寫入*/
  {
    putc(msg[i],fstream);
    putchar(msg[i]);
    len--;
    i++;
  }
  fclose(fstream);
  return 0;
}

函數fopen應用形式“at+”翻開文本文件,應用getc從文件流中逐一讀取字符,直到讀完。

C說話ungetc()函數:把字符退回到輸出流
頭文件:

#include<stdio.h>

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 0;
}

輸入成果:

123ab↙
i *= 123, next char in buffer = a

法式開端履行while輪回,直到碰到非數字或許停止標識能力往下履行,緊接著斷定是否是停止標識,假如不是停止標識則退回鍵盤緩沖區,在最初輸入的時刻應用getch()從緩沖區再次獲得該字符輸入。由於while中應用的是函數getchar(), 所以須要輸出字符後按回車鍵。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved