此代码不起作用:
_tprintf(TEXT("Enter password or press enter to skip: "));
pszPassword = new TCHAR[100];
int numFields = _tscanf_s(TEXT("%s"), pszPassword, 100);
if (numFields == 0) // never reached
{
delete[] pszPassword;
pszPassword = NULL;
}
按Enter键不会使scanf
中止解析输入,因为它会跳过空格直到找到非空白字符。
如何实现理想的行为?
该程序实际上是在C中,我使用new
和delete
代替malloc
,但不想使用std::string
等。
答案 0 :(得分:1)
使用fgets
在C语言而不是C ++中使用相同的东西,它可以工作:
TCHAR *pszPassword = malloc(100 * sizeof (TCHAR));
_tprintf(TEXT("Enter password or press enter to skip: "));
_fgetts(pszPassword, 100, stdin) ;
if (pszPassword[0] == '\n')
{
free(pszPassword) ;
pszPassword = NULL;
}