c - 将字符串文字放在变量之前

标签 c windows

我正在尝试获取用户的输入并将其显示在消息框中。我遇到的问题是字符串前没有“L”,它会显示为乱码。我的 char[] 名为“input”存储用户输入的字符串,但我怎样才能使它有一个“L”呢?到目前为止我尝试过的所有操作都给了我一个错误,包括将 char 更改为 wchar_t。

#include <stdio.h>
#include <windows.h>

int main()
{
    printf("Enter message to be displayed\n");
    char input[20];
    fgets(input,20, stdin);
    MessageBox(NULL, (LPCWSTR)input, (LPCWSTR)L"You wrote", MB_OK);
    return 0;
}

最佳答案

可能您的环境为编译过程定义了_UNICODE,并且MessageBox宏被扩展为MessageBoxW。尝试用以下代码替换您的代码:

MessageBoxA(NULL, input, "You wrote", MB_OK);

这明确表明您要使用 ANSI 版本,它将正确处理 fgets() 的结果。

关于c - 将字符串文字放在变量之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40206922/

相关文章:

c - 字符设备驱动程序中的套接字通信

c++ - 关于右值的范围和内存泄漏

java - 使 Java Swing 在 Windows 中接受用户输入路径(从资源管理器复制粘贴路径)

c++ - CUDA 7.5 Visual Studio 2013 崩溃

c - 我的C加密程序有什么问题?

c - 以两种不同方式指向动态库的函数指针

c - 这学期刚开始学C,但我似乎无法理解教授在这道题中想从我们这里得到什么

windows - Delphi XE2 将 Application.MainForm.Handle 分配给 DLL 中的 Application.Handle

windows - 是否有适用于 Windows 的 Xamarin 测试记录器?

.net - 如何告诉 Windows 预取文件?