c语言高级用法,c语言 输入输出 高级用法

C语言

输入输出

读取数据的最大位数

scanf("%2d",&n);//读取最大2位整数,后面的截断

scanf("%10s",str);//读取最大10位字符

刷新缓冲区的三种方法

scanf("%*[^\n]");scanf("%*c");//使缓冲区溢出,清空

fflush(stdin);//刷新缓冲区 不是很通用

scanf的高级用法

匹配特定字符

scanf("%[abcd]");//只读取字符abcd,顺序不固定,遇到其他字符结束

%[a-z]读取abc...xyz范围内的字符

%[A-Z]读取所有大写字母

%[0-9]读取所有的数字

%[a-zA-Z0-9]读取所有小写字母,大写字母,数字

不匹配特定字符串

%[^\n] 表示匹配除换行符以外的所有字符,遇到换行符停止

%[^0-9] 表示匹配除数字以外的所有字符,遇到十进制数字停止

丢弃读取到的字符

%*d //表示读取一个整数并丢弃

scanf("%*d %d",&n);

总结

%{*}{width}type

type表示读取什么类型数据,例如%d,%s,%[a-z],%[^a-z];type类型必须有

width表示读取最大宽度,可有可无

*表示丢弃读到的数据,可有可无

输入密码小程序

//passward.c

#include

#include

#include

#define PWDLEN 20

void getpwd(char *pwd,int pwdlen);

int main()

{

char pwd[PWDLEN+1];

printf("input passward:");

getpwd(pwd,PWDLEN);

printf("your passward is:%s\n",pwd);

return 0;

}

/**

获取用户输入的密码

@param pwd char* 保存密码的内存首地址

@param pwdlen int 密码的最大长度

*/

void getpwd(char *pwd,int pwdlen)

{

char ch=0;

int i=0;

while(i

ch=getch();//无回显,无缓存,立即输出,区别于getchar()

//用户按下回车 gech()读取到\r getchar()读取到\n

if(ch=='\r'){//回车结束输入

printf("\n");

break;

}

if(ch=='\b' && i>0){//按下删除键

i--;//字符数组中的元素并未被删除,后续输入时会被覆盖 bug

printf("\b \b");//退格 输出空格 退格

}else if(isprint(ch)){//是打印字符

pwd[i]=ch;

i++;

printf("*");

}

}

pwd[i]=0; //字符串结束符

}

阻塞式循环监听

#include

#include

//conio.h 为windows特有头文件

int main(){

char ch;

int i=0;

while(ch=getch()){//getch() 无回显 getche() 有回显

if(ch==27){

break;

}else{

printf("Number:%d\n",++i);

}

}

return 0;

}

非阻塞式循环监听

#include

#include

#include

int main(){

char ch;

int i=0;

//循环监听,知道esc退出

while(1){

if(kbhit()){//检查缓冲区中是否有数据

ch=getch();//将缓冲区中数据以字符形式读出

if(ch==27) {

break;

}

}

printf("Number:%d\n",++i);

Sleep(1000);//暂停1秒

//有小问题 sleep期间按esc无效

}//while

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值