C - 与终端交互,以便命令写在终端上但不执行

时间:2017-04-26 08:27:57

标签: c

所以我有

system("clear");
printf( "Enter a value :");`
int c = getchar();

导致终端以这种方式询问角色

Enter a value:

我想要的是建议一个值的程序,好像用户输入了值但没有按下回车,如下所示:

Enter a value: 5

然后用户可以按Enter键,getchar()将收到5或退回5并输入他们想要的任何值

这可能吗?

1 个答案:

答案 0 :(得分:1)

这是你可以做到的一种方式

#include <stdio.h>
#include <stdlib.h>
int main(){
        char input[100] = "5";
        int pos = 1;
        int c_read = 0;
        printf("Enter a value: 5");
        while (1){
                c_read = getch();
                if (c_read == 13 || c_read == -1){
                       printf("\n");
                       break;
                }
                if (c_read == 8){
                        if(pos == 0)
                                continue;
                        pos--;
                        input[pos] = '\0';
                        printf("\b \b");
                }else{
                        if (pos == 99)
                            continue;  
                        printf("%c", c_read);
                        input[pos] = c_read;
                        pos++;
                        input[pos] = '\0';
                }
         }
         printf("You entered %s\n", input);
}

当然,这使用了可怕的神getch。您可以在Linux上的ncurses库中找到它,并在Windows上附带MinGW。

您可以使用替代实现替换getch以从键盘读取字符。

另外,在使用之前,我要将字符串转换为数字。

PS:如果正在为您缓冲并且更改没有反映,您可能还需要在每次打印后放置一个fflush(stdout)