我正在用 C 和 Windows API 编写程序。我正在使用 Visual Studio 2010 Express 并且字符集设置为“未设置”。我做了一个编辑控件来接受用户名。这是声明:
hwnduser = CreateWindow (TEXT("EDIT"), NULL,
WS_VISIBLE | WS_CHILD | WS_BORDER,
220, 70, 80, 20,
hwnd, (HMENU) 3, NULL, NULL);
我正在将其值提取到名为用户名的字符串中。
len = GetWindowTextLength(hwnduser) + 1;
GetWindowText(hwnduser, username, len);
现在,有效的用户名在一个名为 c_user 的字符串中:
char c_user[] = "foo";
当我比较它们以检查用户是否使用以下代码输入了有效的用户名时,
if (username == c_user)
{
MessageBox(hwnd, "Foo", "Bar", MB_OK);
}
else
{
MessageBox(hwnd, "Bar", "Foo", MB_OK);
}
它从不验证。相反,总是执行 else 条件!我哪里出错了?
如何纠正这个问题?
我试过strcmp!但是,输出仍然没有改变。查看输出(和代码中的比较):
最佳答案
C 和 C++ 没有内置的字符串类型,因此您不能以这种方式比较字符串。 C 和 C++ 使用字符数组,此语法只是比较每个数组的地址(不匹配)。
改为使用 strcmp()
或 _tcscmp()
。
关于c - 用 C 和 Win32 API 编程 : Comparing Strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667651/