有返回功能的輸入函數:
#include <stdio.h> #include <conio.h> void input(char content[]); int main() { char ch[]="\0";// 習慣字符串初賦值為"\0" printf("Please input: "); input(ch);// 調用輸入函數 if(ch[0]!=27) printf("The content : %s",ch);// 輸出內容 else printf("Has come back!\n");// 模擬返回功能 getchar(); return 0; } void input(char content[]) { int keyNum=0; char key=0; while(key!=13)// 13為回車的ASCII,在Windows上可以是'\r',但不是'\n' { key=getch(); if((key>'a'&&key<'z')||(key>'A'&&key<'Z')||(key>='0'&&key<='9')||(key==' ')) {// 這里可以設置輸入范圍(不能包含回車) putchar(key); content[keyNum++]=key;// 很好地運用了a++和++a各自的特點(a++先賦值再++,++a先++再賦值) }else if(key=='\b'&&keyNum>0)// 退格功能 { printf("\b \b"); keyNum--; }else if(key==27)// 27為esc的ASCII,實現程序返回功能 { content[0]=27;// content[0]用於識別是否為esc鍵 keyNum++; break; } content[keyNum]=0;// 0相當於字符串里'\0',代表字符串的結尾;后置以賦予正確的結尾位置 } if(keyNum==0) input(content);// 實現 無輸入情況回車無效 else putchar('\n');// 回車結束輸入並換行 }