#include <stdio.h>
#include <conio.h>
#define ENTER_KEY '\n'
#define NULL_TERMINATOR '\0'
int main()
{
char name[100], input;
int counter = 0;
while(input != ENTER_KEY)
{
input = getchar();
name[counter] = input;
counter++;
}
counter--;
name[counter] = NULL_TERMINATOR;
printf("%s", name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我写了一些东西,它应该连续保存在Array 这个名字中.而反应该我进入的每一个字符上去.但是如果我按Backspace,它看起来会让计数器减少.因为例如,如果我写"abcdef"并按退格键3次并将其更改为"abcxyz",然后按Enter键.它打印"abcxyz".
这取决于控制台驱动程序.在大多数系统上(至少类似Unix的行模式和Windows控制台),程序在输入时不会收到字符,但是系统准备一行(直到换行符)并将整行发送到该程序.
在这种情况下,退格通常用于编辑该控制台缓冲区,这意味着删除的字符实际上在被移交给程序之前被删除.因此,如果您键入abcdef<backspace><backspace><backspace>xyz<Return>程序将收到以下字符串:"abcxyz\n".
请注意,在GUI程序或全屏文本模式程序(如emacs或vi)中,系统处于原始模式(Unix语言),并且在键入时接收每个字符.在这种情况下,程序必须在收到输入时管理输入并擦除自己的字符数组<backspace>.