gpt4 book ai didi

c - 如何使用scanf获取空白输入

转载 作者:行者123 更新时间:2023-12-04 09:00:32 27 4
gpt4 key购买 nike

我创建了一个基于控制台的程序,可以从用户那里获取命令。我想检查用户是否给出了空白输入(只需按 Enter 键),它会向用户发送一条消息。我使用 wscanf_s 来获取用户的输入。我编写了以下代码:

        else if (!wcscmp(g_c_Commands, L"console"))
{
wchar_t console_command[MAX_PATH] = { 0 };
wscanf_s(L"%s", console_command, MAX_PATH - 1);

if (!wcscmp(console_command, L"--local"))
{
CallPsExecuteWindow(arg_computer_name);
}
else if (!wcscmp(console_command, L"--ip"))
{
wchar_t remote_host[MAX_PATH] = { 0 };
wscanf_s(L"%s", remote_host, MAX_PATH - 1);
CallPsExecuteWindow(remote_host);
}
else
{
wprintf(L"\n\t");
WarningMessage(L"%s", L"[Wrong] Usage: console --local / --ip [ADDRESS].");
wprintf(L"\n\n");
}
}

最佳答案

而不是 "%s" ,你应该使用 "%[^ \t\n]"跳过空格后:

console_command[0] = L'\0';
wscanf_s(L"%*[ \t]"); // skip blanks if any
wscanf_s(L"%[^ \t\n]", console_command, (unsigned)MAX_PATH); // read word, stop on white space
第一个 wscanf_s如果没有待处理的空白将失败,但您可以忽略该错误。
第二个 wscanf_s如果行上没有更多的单词挂起,则将失败,即:如果挂起的字节是换行符, console_command未修改,因此它仍然包含一个空字符串。

将此输入解析为宽字符串是一个主要的痛苦,大多数平台都对 UTF-8 编码进行了标准化,很遗憾您必须处理如此繁琐的 API。
还要通过 unsigned int也很烦人当 C 标准指定此额外参数应为 size_t 时,将 value 作为目标数组中的元素数。它在包括 Windows 在内的大多数 64 位平台上具有不同的宽度。

关于c - 如何使用scanf获取空白输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63581704/

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