所以我有
system("clear");
printf( "Enter a value :");`
int c = getchar();
导致终端以这种方式询问角色
Enter a value:
我想要的是建议一个值的程序,好像用户输入了值但没有按下回车,如下所示:
Enter a value: 5
然后用户可以按Enter键,getchar()
将收到5
或退回5
并输入他们想要的任何值
这可能吗?
答案 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)
。