代码如下:
- #include <stdio.h>
- #include <conio.h>
- void input(char *content);
- int main()
- {
- char ch[]="0";// 习惯字符串初赋值为 "0"
- printf("Please input:");
- input(ch);// 调用输入函数
- printf("The content : %s",ch);// 输出内容
- getch();
- return 0;
- }
- void input(char *content)
- {
- int keyNum=0;
- char key='\b';// 初赋值'\b'首次循环才不会执行第一个 if
- while(key!=13)// 13 为回车的 ASCII, 使用'\n'在 Windows 上有异常
- {
- if(key!='\b')// 这里可以设置输入范围
- {
- putchar(key);
- content[keyNum++]=key;// 很好地运用了 a++ 和 ++a 各自的特点 (a++ 先赋值再 ++,++a 先 ++ 再赋值)
- }else if(key=='\b'&&keyNum>0)
- {
- putchar('\b');
- putchar(' ');
- putchar('\b');
- keyNum--;
- }
- content[keyNum]=0;// 0 相当于字符串里'\0', 代表字符串的结尾; 后置以赋予正确的结尾位置
- key=getch();// getch 后置, 解决首次输入回车会被 content 获取的问题
- }
- printf("\n");// 回车结束输入并换行
- }
来源: http://www.bubuko.com/infodetail-3343140.html