自定义输入函数 - C语言编程
有返回功能的输入函数:
#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');// 回车结束输入并换行 }