如何获得2行之间的用户输入

时间:2016-02-11 20:38:22

标签: c

这是我的代码:

printf(" What is your guess:");
printf("         (hint:don't guess %d)",half);
scanf("%d", &guess);

输出:

enter image description here

4 个答案:

答案 0 :(得分:0)

您无法使用标准C (使用stdio.h)执行此操作,因此我会重新安排您的代码,如下所示:

printf("What is your guess (hint: don't guess %d): ", half);
scanf("%d", &guess);

答案 1 :(得分:0)

只需使用wherex()wherey()即可获取光标的当前x和y坐标。然后使用gotoxy

移动光标
  • 打印文字
  • 获取光标的当前x和y位置并保存wherex()wherey()
  • 将光标向右移动gotoxy()
  • print 2nd text
  • 将光标移回您保存的位置gotoxy()

您可以在conio.h中找到这些功能。它仅在Windows下可用。

http://code-reference.com/c/conio.h/gotoxy
http://code-reference.com/c/conio.h/wherex
http://code-reference.com/c/conio.h/wherey

答案 2 :(得分:0)

尝试退格

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 */;

您需要调整打印的退格数量。并考虑half的大小。

答案 3 :(得分:0)

我首先要将第二个输出写入字符串:

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

然后,获取最终字符串的长度:

size_t len = strlen(temp);

现在,将字符串写入终端:

print("%s", temp);

在此之后,您需要将光标移回。 '\b'将光标向后移动一个字符。所以你需要一个小循环:

for(int i = 0; i < len; i++)
    putchar('\b');

你的光标就在你开始的地方。

注意:如果您需要返回到行的开头,则可以使用'\r'