该代码不起作用:
_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
等。 最佳答案
在C中使用fgets
而不是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;
}