gpt4 book ai didi

Windows 控制台上的 C 可选输入

转载 作者:行者123 更新时间:2023-11-30 15:37:46 25 4
gpt4 key购买 nike

此代码不起作用:

_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::字符串等。

最佳答案

使用 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;
}

关于Windows 控制台上的 C 可选输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com