getch returns 2 characters when I type one
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
When I use getch, it always appends the caracter read with a null character.
When I use the following code:
#include "stdafx.h"
#include <conio.h>
int main()
{
char c = 0;
while (c != 'x')
{
c = _getch();
printf("Char read: <%c> n", c);
}
}
It returns the follwing on the console, when I press the keys "asdx":
Char read: <a>
Char read: < >
Char read: <s>
Char read: < >
Char read: <d>
Char read: < >
Char read: <x>
This is compiled in VS 2017 in a plain new single file project, running on a windows 10 console window. I tried removing the _UNICODE and UNICODE define.
c++ visual-studio-2017 console-application
|
show 3 more comments
When I use getch, it always appends the caracter read with a null character.
When I use the following code:
#include "stdafx.h"
#include <conio.h>
int main()
{
char c = 0;
while (c != 'x')
{
c = _getch();
printf("Char read: <%c> n", c);
}
}
It returns the follwing on the console, when I press the keys "asdx":
Char read: <a>
Char read: < >
Char read: <s>
Char read: < >
Char read: <d>
Char read: < >
Char read: <x>
This is compiled in VS 2017 in a plain new single file project, running on a windows 10 console window. I tried removing the _UNICODE and UNICODE define.
c++ visual-studio-2017 console-application
How do you know it's a null character? BTW_getch()
returnsint
.
– n.m.
Aug 10 '18 at 18:48
2
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
1
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
1
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55
|
show 3 more comments
When I use getch, it always appends the caracter read with a null character.
When I use the following code:
#include "stdafx.h"
#include <conio.h>
int main()
{
char c = 0;
while (c != 'x')
{
c = _getch();
printf("Char read: <%c> n", c);
}
}
It returns the follwing on the console, when I press the keys "asdx":
Char read: <a>
Char read: < >
Char read: <s>
Char read: < >
Char read: <d>
Char read: < >
Char read: <x>
This is compiled in VS 2017 in a plain new single file project, running on a windows 10 console window. I tried removing the _UNICODE and UNICODE define.
c++ visual-studio-2017 console-application
When I use getch, it always appends the caracter read with a null character.
When I use the following code:
#include "stdafx.h"
#include <conio.h>
int main()
{
char c = 0;
while (c != 'x')
{
c = _getch();
printf("Char read: <%c> n", c);
}
}
It returns the follwing on the console, when I press the keys "asdx":
Char read: <a>
Char read: < >
Char read: <s>
Char read: < >
Char read: <d>
Char read: < >
Char read: <x>
This is compiled in VS 2017 in a plain new single file project, running on a windows 10 console window. I tried removing the _UNICODE and UNICODE define.
c++ visual-studio-2017 console-application
c++ visual-studio-2017 console-application
asked Aug 10 '18 at 18:40
Vincent HubertVincent Hubert
1,161819
1,161819
How do you know it's a null character? BTW_getch()
returnsint
.
– n.m.
Aug 10 '18 at 18:48
2
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
1
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
1
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55
|
show 3 more comments
How do you know it's a null character? BTW_getch()
returnsint
.
– n.m.
Aug 10 '18 at 18:48
2
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
1
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
1
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55
How do you know it's a null character? BTW
_getch()
returns int
.– n.m.
Aug 10 '18 at 18:48
How do you know it's a null character? BTW
_getch()
returns int
.– n.m.
Aug 10 '18 at 18:48
2
2
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
1
1
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
1
1
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55
|
show 3 more comments
2 Answers
2
active
oldest
votes
Well, crap!
It's a (rather new) bug in windows.
https://developercommunity.visualstudio.com/content/problem/247770/-getch-broken-in-vs-157.html
"When building a console application using the _getch() function
suddenly returns two times for each keypress"
got the following response from microsoft:
" Thanks for reporting this! This will be fixed on a future windows
update."
UPDATE:
As stated in the link above, setting the runtime to statically link with a previous version of the C runtime will fix the issue, but you need to make sure all your related projects (if you are building a library, for example) also use the same runtime. (I tested it)
add a comment |
If you don't want to (or you can't) use a previous version of the Universal C Runtime, you can use _getwch
instead of _getch
, as the problem doesn't affect to _getwch
function.
Note that _getwch
can return Unicode characters, so it may return distinct values than _getch
for some keys. For example, for €
character, _getch
returns 0x3f (?
) while _getwch
returns 0x20ac (Unicode value for €)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f51792349%2fgetch-returns-2-characters-when-i-type-one%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Well, crap!
It's a (rather new) bug in windows.
https://developercommunity.visualstudio.com/content/problem/247770/-getch-broken-in-vs-157.html
"When building a console application using the _getch() function
suddenly returns two times for each keypress"
got the following response from microsoft:
" Thanks for reporting this! This will be fixed on a future windows
update."
UPDATE:
As stated in the link above, setting the runtime to statically link with a previous version of the C runtime will fix the issue, but you need to make sure all your related projects (if you are building a library, for example) also use the same runtime. (I tested it)
add a comment |
Well, crap!
It's a (rather new) bug in windows.
https://developercommunity.visualstudio.com/content/problem/247770/-getch-broken-in-vs-157.html
"When building a console application using the _getch() function
suddenly returns two times for each keypress"
got the following response from microsoft:
" Thanks for reporting this! This will be fixed on a future windows
update."
UPDATE:
As stated in the link above, setting the runtime to statically link with a previous version of the C runtime will fix the issue, but you need to make sure all your related projects (if you are building a library, for example) also use the same runtime. (I tested it)
add a comment |
Well, crap!
It's a (rather new) bug in windows.
https://developercommunity.visualstudio.com/content/problem/247770/-getch-broken-in-vs-157.html
"When building a console application using the _getch() function
suddenly returns two times for each keypress"
got the following response from microsoft:
" Thanks for reporting this! This will be fixed on a future windows
update."
UPDATE:
As stated in the link above, setting the runtime to statically link with a previous version of the C runtime will fix the issue, but you need to make sure all your related projects (if you are building a library, for example) also use the same runtime. (I tested it)
Well, crap!
It's a (rather new) bug in windows.
https://developercommunity.visualstudio.com/content/problem/247770/-getch-broken-in-vs-157.html
"When building a console application using the _getch() function
suddenly returns two times for each keypress"
got the following response from microsoft:
" Thanks for reporting this! This will be fixed on a future windows
update."
UPDATE:
As stated in the link above, setting the runtime to statically link with a previous version of the C runtime will fix the issue, but you need to make sure all your related projects (if you are building a library, for example) also use the same runtime. (I tested it)
edited Aug 10 '18 at 19:29
answered Aug 10 '18 at 18:56
Vincent HubertVincent Hubert
1,161819
1,161819
add a comment |
add a comment |
If you don't want to (or you can't) use a previous version of the Universal C Runtime, you can use _getwch
instead of _getch
, as the problem doesn't affect to _getwch
function.
Note that _getwch
can return Unicode characters, so it may return distinct values than _getch
for some keys. For example, for €
character, _getch
returns 0x3f (?
) while _getwch
returns 0x20ac (Unicode value for €)
add a comment |
If you don't want to (or you can't) use a previous version of the Universal C Runtime, you can use _getwch
instead of _getch
, as the problem doesn't affect to _getwch
function.
Note that _getwch
can return Unicode characters, so it may return distinct values than _getch
for some keys. For example, for €
character, _getch
returns 0x3f (?
) while _getwch
returns 0x20ac (Unicode value for €)
add a comment |
If you don't want to (or you can't) use a previous version of the Universal C Runtime, you can use _getwch
instead of _getch
, as the problem doesn't affect to _getwch
function.
Note that _getwch
can return Unicode characters, so it may return distinct values than _getch
for some keys. For example, for €
character, _getch
returns 0x3f (?
) while _getwch
returns 0x20ac (Unicode value for €)
If you don't want to (or you can't) use a previous version of the Universal C Runtime, you can use _getwch
instead of _getch
, as the problem doesn't affect to _getwch
function.
Note that _getwch
can return Unicode characters, so it may return distinct values than _getch
for some keys. For example, for €
character, _getch
returns 0x3f (?
) while _getwch
returns 0x20ac (Unicode value for €)
answered Oct 30 '18 at 12:53
gusitoguaygusitoguay
1106
1106
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f51792349%2fgetch-returns-2-characters-when-i-type-one%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
How do you know it's a null character? BTW
_getch()
returnsint
.– n.m.
Aug 10 '18 at 18:48
2
works as expected for me, have you tried printing the numerical value of c to see what it is?
– Alan Birtles
Aug 10 '18 at 18:48
I know it's a null because I traced it into the debugger. I tried with either int or char, I got the same result.
– Vincent Hubert
Aug 10 '18 at 18:52
1
This is apparently a problem in some versions of Windows SDK, see developercommunity.visualstudio.com/content/problem/247770/…
– n.m.
Aug 10 '18 at 18:55
1
@AlanBirtles: it works for me in Debug mode but fails in Release mode. Same behavior as OP.
– Thomas Weller
Aug 10 '18 at 18:55