当尝试使用写入控制台输出字符 https://learn.microsoft.com/en-us/windows/console/writeconsoleoutputcharacter函数,应用程序崩溃。
COORD pos;
pos.X = 0;
pos.Y = 0;
HANDLE buffer = GetStdHandle(STD_OUTPUT_HANDLE);
LPDWORD written;
char* str = "s";
WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, written);
但 WriteConsole 函数工作正常:
WriteConsole(buffer1,str,strlen(str),written,NULL);
我没有收到任何错误,但 Windows“应用程序停止响应”通知,并且我无法使用调试器,因为我正在使用的 IDE (Dev C++ 5.11) 已损坏。
变量在哪里written
pointing?该函数将取消引用该参数以设置写入的字符数。如果变量没有初始化,它将有一个不定值,并且看似指向随机位置,导致未定义的行为当被取消引用时。
而是使用普通的DWORD
并使用取址运算符&
:
DWORD written;
WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, &written);
// ^
// Note the address-of operator here
或者,如果您对写入的字符数不感兴趣,请忽略nullptr
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)