windows - C ++ WinAPI - WriteConsoleOutputCharacter styrter konsolprogrammet

Indlæg af Hanne Mølgaard Plasc

Problem



Når du forsøger at bruge funktionen WriteConsoleOutputCharacter, krasjer programmet.


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);


men funktionen WriteConsole fungerer korrekt:


WriteConsole(buffer1,str,strlen(str),written,NULL);


Jeg får ikke nogen fejl, men Windows-applikationen stoppede med at svare, og jeg kan ikke bruge en debugger, da IDE'en jeg bruger (Dev C ++ 5.11) har en brudte.


Tak på forhånd!

Bedste reference


Hvor er variablen written peger ? Funktionen vil dereference det argument for at indstille antallet af tegn skrevet. Hvis variablen ikke initialiseres, vil den have en ubestemt -værdi, og tilsyneladende pege på en tilfældig placering, hvilket fører til udefineret adfærd , når den bliver overført.


Brug i stedet en almindelig DWORD og brug adressen til operatøren &:


DWORD written;

WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, &written);
//                                                         ^
//                         Note the address-of operator here


Eller hvis du ikke er interesseret i hvor mange tegn der er skrevet, skal du passere nullptr i stedet.