自定义输入函数 - 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');// 回车结束输入并换行
}
posted @ 2019-12-21 14:59  艾德龙迹  阅读(1370)  评论(0编辑  收藏  举报