C 如何在两行之间获取用户输入
这是我的密码:C 如何在两行之间获取用户输入,c,C,这是我的密码: printf(" What is your guess:"); printf(" (hint:don't guess %d)",half); scanf("%d", &guess); 输出: 您不能使用标准C(使用stdio.h),因此我将重新安排您的代码,如下所示: printf("What is your guess (hint: don't guess %d): ", half); scanf("%d", &guess); 只需使用whe
printf(" What is your guess:");
printf(" (hint:don't guess %d)",half);
scanf("%d", &guess);
输出:
您不能使用标准C(使用stdio.h
),因此我将重新安排您的代码,如下所示:
printf("What is your guess (hint: don't guess %d): ", half);
scanf("%d", &guess);
只需使用wherex()
和wherey()
即可获得光标的当前x和y坐标。然后用gotoxy
- 打印文本
- 获取光标的当前x和y位置,并保存它们
和wherex()
wherey()
- 将光标进一步向右移动
gotoxy()
- 打印第二个文本
- 将光标移回保存的位置
gotoxy()
conio.h
中找到这些函数。它仅在Windows下可用
尝试退格
printf("What is your guess: (hint: don't guess %d)", half);
printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
fflush(stdout);
if (scanf("%d", &guess) != 1) /* error */;
您需要调整打印的退格数。考虑到
一半的大小
我首先将第二个输出写入一个字符串:
size_t size = strlen(" (hint:don't guess )") + 6 // for numbers with < 6 digits
char *temp = malloc(size); // Alocate enough space
snprintf(temp, size, " (hint:don't guess %d)", YOUR_NUMBER); // Write to string
现在,将字符串写入终端:
print("%s", temp);
在此之后,您需要将光标向后移动<代码>'\b'将光标向后移动一个字符。所以你需要一个小循环:
for(int i = 0; i < len; i++)
putchar('\b');
for(int i=0;i
你的光标会在你开始的地方
注意:如果您需要返回到行的开头,您可以简单地使用
'\r'
我不明白您在这里的意思?请解释您希望看到的内容。如果您的意思是希望光标显示在单词guess
之后,则不需要使用函数。你需要更高级的东西,比如ncurses。使用printf((提示:不要猜%d)\r(空格)”,一半);fflush(stdout)
可能有效(注意\r),但不可移植。您应该提到,Conio通常仅在Windows上可用,而不是在Unix/Linux上。@Barmar确实如此,但如果不再次删除链接,我将无法编辑我的答案。它告诉我这是未格式化的代码。。。试图使用该选项添加超链接,但它仍然告诉我它的代码。。。
for(int i = 0; i < len; i++)
putchar('\b');