簡體   English   中英

Windows控制台上的C可選輸入

[英]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語言中,我使用newdelete而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM