#include #include #define CR 0x0d //carriage return #define ESC 0x1b //Escape key #define TAB 0x09 #define LF 0x0a //line feed #define BACKSPACE 0x08 #define NULL 0 //Empty character #define TRUE 1 #define FALSE 0 #define LENGTH 15 //size of the string int input(char *string, int length); void main() { char string[LENGTH]; printf("What is your name?"); if(!input(string,LENGTH)) printf("Darn glad to meet you, %s!\n",string); else printf("\n*** Canceled"); } int input(char *string, int length) { int done = FALSE; int cancel = FALSE; int index = 0; char ch; string[0] = NULL; //init the buffer do { ch = getch(); /* Check to see whether the buffer is full */ if (index == length) { switch(ch) { case ESC: done = TRUE; cancel = TRUE; break; case CR: break; case BACKSPACE: break; default: ch = NULL; break; } } /* Process the keyboard input */ switch(ch) { case ESC: //Escape key done = TRUE; cancel = TRUE; break; case CR: //Enter key putchar(ch); putchar(LF); string[index] = NULL; done = TRUE; break; case BACKSPACE: if(index==0) { break; } else { putchar(ch); putchar(' '); putchar(ch); index--; break; } case NULL: break; default: //display & store putchar(ch); index[string] = ch; index++; break; } } while(!done); return(cancel); }