在不中断C中的输入提示的情况下在不同位置打印消息

时间:2013-10-29 12:18:22

标签: c

如果我有一个“MessageLine”来显示消息和输入提示Input: 像这样:

 MessageLine: Type 123!   
 Input: 

然后,键入错误的输入,将显示“错误!”在MessageLine上:

MessageLine: Wrong!     
Input: somewronginput

然后,用户不知道下一步该做什么,我希望第一条消息在3秒后再次显示,但是光标仍处于输入提示符,意味着MessageLine会改变它的消息而不影响输入提示。

我的“MessageLine”或其他任何解决方案都会有一个独立的序列吗?

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <string.h>

void msgline(int msg_var){
    char *msg[]={
        "Type Numbers \"123\"",
        "Wrong! Try Again",
        "Correct! Press Any Key to Exit..."
        };
    gotoxy(25,1);
    clreol();
    printf("Message: %s",msg[msg_var]);// Message Box
}
void main()
{
    char inp[256]={0},
    answr[]="123";
    clrscr();
    do{
        msgline(0); 
        printf("\n\nInput: ");
        clreol();
        scanf("%s",&inp);
        if(!strcmp(inp,answr));
        else{
            memset(inp,0,sizeof(inp));
            msgline(1); // Wrong input
            delay(3000);
            /* delay function also delays the loop
            and the cursor is at the message's end of line */
            }
    }
    while(strcmp(inp,answr));
    msgline(2);  // Correct input
    getch();
}

1 个答案:

答案 0 :(得分:0)

此控制级别不是输出流的标准C定义的一部分。

根据您的平台,您可能可以使用GNU ncurses