c - 在我使用 C 的控制台游戏中,打印的是 '90' 而不是 '9'
问题描述
我在 Visual Studio 2019 上使用 C 制作控制台游戏。我制作了一个打印变量的代码。
仅当值大于 10 时才有效。
如果变量的值小于 10,它会打印 10 而不是 1, 2 而不是 20 ... 9 而不是 90。
我不知道如何解决这个问题。
这是我的代码
#include<stdio.h>
#include<windows.h>
int a =20;
void gotoxy(int x, int y) { //cursor goes to x, y
COORD CursorPosition = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), CursorPosition);
}
void HideCursor() {
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO info;
info.dwSize = 100;
info.bVisible = FALSE;
SetConsoleCursorInfo(consoleHandle, &info);
}
void count() {
char c = _getch();
switch (c) {
case 'p': a++; break;
case 'o': a--; break;
}
}
int main() {
system("mode con cols=10 lines=10");
system("cls");
HideCursor();
while (1) {
gotoxy(5, 5);
count();
printf("%d", a);
}
}
解决方案
a
这是因为如果变成一位数,您不会覆盖第二个数字。您需要覆盖所有先前写入的数字,例如通过设置字段宽度:
// Print right-justified numbers, with empty spaces for one or two digit numbers
printf("%3d", a);
推荐阅读
- css - 代码沙箱和本地反应的行为不同
- react-native - 使用 React Native Webview 在 iOS 上的键盘重叠输入
- python - 计算传感器每天处于特定状态的时间量
- mongodb - 如何从猫鼬中的填充中过滤文档
- docusignapi - 无法建立 SSL 连接,请参阅内部异常。- DocuSign EnvelopesApi 仅调用 PROD 环境
- python - 代理不连接,返回 httpsconnection 错误
- c# - 当主显示器缩放 > 100% 时,GetMonitorInfo 为辅助显示器返回错误的窗口大小
- r - R bigrquery 在写作中丢失小数
- java - 有没有办法改变我的 String8 导入?
- ruby-on-rails - 在我的 Rails 5 api 中正确添加图像