_cscanf、_cscanf_l、_cwscanf、_cwscanf_l
从控制台读取格式数据。 有关这些函数的更多安全版本,请参见 _cscanf_s、_cscanf_s_l、_cwscanf_s、_cwscanf_s_l。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(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的调用,则不这样。
此函数验证其参数。 如果format为 NULL,则将调用无效参数处理程序,如参数验证所述 。 如果允许执行继续,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> |
有关兼容性的更多信息,请参见兼容性。
示例
// 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