自定義輸入函數 - 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');// 回車結束輸入並換行
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM