複製鏈接
請複製以下鏈接發送給好友

fgetc

鎖定
fgetc是一種計算機C語言中的函數。意為從文件指針stream指向的文件中讀取一個字符,讀取一個字節後,光標位置後移一個字節。格式:int fgetc(FILE *stream);。
中文名
fgetc
函數種類
“stdio.h”
功    能
函數從流中返回一個字符值
語    法
int fgetc(FILE *stream)
性    質
計算機C語言中的函數
返回值
得到的字符值

fgetc簡介

內容説明:函數從輸入流stream的當前位置返回下一個字符,並將文件位置指示器增大。該字符作為一個無符號字符讀取,並被轉換成為一個整型值。
如果到了文件的結尾或遇到讀錯誤,將返回EOF。由於EOF是一個有效的整型值,當你操作二進制文件時,必須用feof函數進行文件結束檢測。同樣也必須使用ferror函數進行出錯檢查。
參考:fputc();getc();putc();fopen()。 [1] 
fgetc()函數的功能是從文件指針指定的文件中讀入一個字符,該字符的ASCII值作為函數的返回值,若返回值為EOF,説明文件結束,EOF是文件結束標誌,值為-1。
語句“c=fgetc(fp);”是從文件指針fp指定的文件中讀一個字符並存人c變量中,c是字符型變量。使用fgetc()函數調用前,需要讀取的文件必須是以讀或讀/寫方式打開的,並且該文件應該已經存在。
讀操作的位置也是由文件內部位置指針來確定,對於已經存在的文件,文件被打開時,文件內部位置指針指向文件的第一個字節。這時,調用fgetc()函數讀的是第一個字節的字符,讀入一個字節以後,位置指針將自動向後移動一個字節,那麼再調用一次fgetc()函數,則讀取的是第2個字符。連續調用該函數就可以讀取文件的每個字符,並且可以使用EOF來判斷是否已經到了文件末尾。 [2] 

fgetc用法

這個函數的返回值,是返回所讀取的一個字節。如果讀到文件末尾或者讀取出錯時返回EOF。雖然返回一個字節,但返回值不為unsigned char的原因為,返回值要能表示-1(即為EOF)。 [3] 

fgetc程序示例

#include <string.h> 
#include <stdio.h> 
#include <conio.h> 
int main(void) 
{
    FILE *stream;
    char string[ ] = "This is a test";
    int ch; 
    
    /* open a file for update  */
    stream = fopen("DUMMY.FIL", "w+"); 
    
    /* write a string into the file */
    fwrite(string, strlen(string), 1, stream); 

    /* seek to the beginning of the file */
    fseek(stream, 0, SEEK_SET);
    do
    {
        /* read a char from the file */
        ch = fgetc(stream);
        /* display the character */
        putch(ch);
    } 
    while (ch != EOF);
    fclose(stream);
    return 0;
}

fgetc相關函數

fgetcgetc()

功能:函數從流中返回一個字符值。
語法:int getc(FILE * stream)
返回值:整數值。
函數種類:“stdio.h”
內容説明:此函數和fgetc函數相似,但它是以一個宏來實現的。另外它將不止一次地計算流參數咖,這對通常的宏的規則來説是一個例外。getc是一個已經高度優化的函數,所以該函數是進行單個字符讀操作的最好的函數。
參考:如fputc();fgetc();putc();fopen()。

fgetcfputs()

功能:將字符串中的內容寫到指定的流中。
語法: int fputs(const char *s,FILE * stream)
返回值:整數值。
函數種類:“stdio.h”
內容説明:函數將字符串指針s所指向的字符串中的內容寫到流stream中。標誌結束的空字符(NULL)不寫。函數也不另外增加一個換行符。只是輸出字符串中的所有字符。 函數操作成功時返回值為0,否則返回非0值。
如果流是以文本形式打開的,就會對有些字符進行翻譯操作。這意味着字符串可能會與文件內容之間沒有一一對應的映射關係。然而,當文件以二進制打開時,不發生字符翻譯,在字符串與文件內容之間存在一一對應的映射關係。
參考資料
  • 1.    森林圖書工作室.Linux & Unix C程序員參考大全:國防工業出版社,2001:64-65
  • 2.    林小茶.C程序設計:中國鐵道出版社,2016:270-271
  • 3.    田兆福 ,矯慶軍 ,陳志雙.C語言程序設計基礎教程:國防工業出版社,2016:134-135