[英]C optional input on Windows console
該代碼不起作用:
_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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.