getc
, getwc
從資料流讀取字元。
語法
int getc(
FILE *stream
);
wint_t getwc(
FILE *stream
);
參數
stream
輸入資料流。
傳回值
傳回讀取的字元。 若要表示讀取錯誤或檔案結尾條件,getc
會傳回 EOF
,而getwc
會傳回 WEOF
。 針對 getc
,請使用 ferror
或 feof
來檢查錯誤或檔案結尾。 如果 stream
為 NULL
,getc
並getwc
叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,這些函式會傳回 EOF
(或 WEOF
針對 getwc
),並將 設定 errno
為 EINVAL
。
如需傳回碼的詳細資訊,請參閱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