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