有回傳功能的輸入函式:
#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');// 回車結束輸入并換行 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56860.html
標籤:C
