getc, getwc

從資料流讀取字元。

語法

int getc(
   FILE *stream
);
wint_t getwc(
   FILE *stream
);

參數

stream
輸入資料流。

傳回值

傳回讀取的字元。 若要表示讀取錯誤或檔案結尾條件,getc 會傳回 EOF,而getwc 會傳回 WEOF。 針對 getc,請使用 ferrorfeof 來檢查錯誤或檔案結尾。 如果 streamNULLgetcgetwc 叫用不正確參數處理常式,如參數驗證 中所述 。 如果允許繼續執行,這些函式會傳回 EOF (或 WEOF 針對 getwc ),並將 設定 errnoEINVAL

如需傳回碼的詳細資訊,請參閱 errno_doserrno_sys_errlist_sys_nerr

備註

每個常式從目前位置的檔案讀取單一字元,並遞增相關聯的檔案指標 (如果有定義) 以指向下一個字元。 檔案與 stream 相關聯。

這些函式鎖定呼叫執行緒,因此為安全執行緒。 如需非鎖定版本,請參閱 _getc_nolock_getwc_nolock

常式特定備註如下。

常式 備註
getc fgetc 相同,但實作為函式和巨集。
getwc getc 的寬字元版本。 根據是以文字模式還是二進位模式開啟 stream,讀取多位元組字元或寬字元。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

泛型文字常式對應

TCHAR.H 常式 _UNICODE_MBCS 未定義 _MBCS 定義 _UNICODE 定義
_gettc getc getc getwc

需求

常式 必要的標頭
getc <stdio.h>
getwc <stdio.h > 或 < wchar.h>

如需相容性詳細資訊,請參閱相容性

範例

// crt_getc.c
// Use getc to read a line from a file.

#include <stdio.h>

int main()
{
    char buffer[81];
    int i, ch;
    FILE* fp;

    // Read a single line from the file "crt_getc.txt".

    fopen_s(&fp, "crt_getc.txt", "r");
    if (!fp)
    {
       printf("Failed to open file crt_getc.txt.\n");
       exit(1);
    }

    for (i = 0; (i < 80) && ((ch = getc(fp)) != EOF)
                         && (ch != '\n'); i++)
    {
        buffer[i] = (char) ch;
    }

    // Terminate string with a null character
    buffer[i] = '\0';
    printf( "Input was: %s\n", buffer);

    fclose(fp);
}

輸入︰crt_getc.txt

Line one.
Line two.

輸出

Input was: Line one.

另請參閱

資料流 I/O
fgetc, fgetwc
_getch, _getwch
putc, putwc
ungetc, ungetwc