_cscanf、 _cscanf_l、 _cwscanf、 _cwscanf_l
從主控台讀取格式化資料。 更多這些函式的可用安全版本,請參閱 _cscanf_s、 _cscanf_s_l、 _cwscanf_s、 _cwscanf_s_l 。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
int _cscanf(
const char *format [,
argument] ...
);
int _cscanf_l(
const char *format,
locale_t locale [,
argument] ...
);
int _cwscanf(
const wchar_t *format [,
argument] ...
);
int _cwscanf_l(
const wchar_t *format,
locale_t locale [,
argument] ...
);
參數
format
格式控制字串。argument
選擇性參數。locale
使用的地區設定。
傳回值
已成功轉換和指定欄位的數目。 傳回值不包括讀取,但未指定的欄位。 傳回值是嘗試的 EOF 可以讀取檔案的結尾。 當輸入重新導向在作業系統命令列層級時,就會發生。 傳回值 0 表示欄位未指定。
備註
_cscanf 函式會將資料直接從主控台輸入 argument指定的位置。 _getche 函式用來讀取字元。 每個選擇性參數必須是指標與對應至 format的型別規範的型別的變數。 輸入說明欄位且具有表單和函式和 scanf 函式的 format 參數的格式控制。 當 _cscanf 通常回應輸入字元時,它不這樣做,如果最後一次呼叫是 _ungetch。
這個函式會驗證其參數。 如果格式是空的,不正確的參數叫用處理常式,如 參數驗證中所述。 如果允許繼續執行, errno 會被設置為 EINVAL 且 EOF 會回傳零。
這些函式的以 _l 後綴版本相同,但使用傳遞的地區設定參數而非目前執行緒的地區設定。
泛用文字常式對應
TCHAR.H 常式 |
未定義的 _UNICODE 和 _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tcscanf |
_cscanf |
_cscanf |
_cwscanf |
_tcscanf_l |
_cscanf_l |
_cscanf_l |
_cwscanf_l |
需求
程序 |
必要的標頭檔 |
---|---|
_cscanf,_cscanf_l |
<conio.h> |
_cwscanf, _cwscanf_l |
<conio.h> 或 <wchar.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_cscanf.c
// compile with: /c /W3
/* This program prompts for a string
* and uses _cscanf to read in the response.
* Then _cscanf returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, i[3];
_cprintf_s( "Enter three integers: ");
result = _cscanf( "%i %i %i", &i[0], &i[1], &i[2] ); // C4996
// Note: _cscanf is deprecated; consider using _cscanf_s instead
_cprintf_s( "\r\nYou entered " );
while( result-- )
_cprintf_s( "%i ", i[result] );
_cprintf_s( "\r\n" );
}
輸入
1 2 3
Output
Enter three integers: 1 2 3
You entered 3 2 1
請參閱
參考
_cprintf、 _cprintf_l、 _cwprintf、 _cwprintf_l
fscanf、 _fscanf_l、 fwscanf、 _fwscanf_l