_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
从个控件的 Reads 设置数据格式。 这些功能的更安全版本可用;请参见 _cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l。
重要
此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 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> |
有关更多兼容性信息,请参见中介绍的 兼容性。
示例
// 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