c语言读取键盘输入中有什么函数可以不等待用户键盘的输入

2015年4月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。C语言的输入输出实验
C语言的输入输出实验
发布时间: 3:21:48
编辑:www.fx114.net
本篇文章主要介绍了"C语言的输入输出实验",主要涉及到C语言的输入输出实验方面的内容,对于C语言的输入输出实验感兴趣的同学可以参考一下。
/*因为C语言跟中国功夫一样很五发八门,不同的版本、编译器、操作系统、内存条都会影响其结果,所以先
声明:我是在1G的32位内存条+Windows XP sp3+Turbo C 2.0+全英文目录下完成的 writed by sageking2*/
#include&stdio.h&
void Myprintf() /*printf的'f'表示格式化(format)输出的意思*/
int i=65; /*用法:printf(格式控制字符串,输出列表)*/
float b=123.4567891; /*格式一般形式:%[标志][输出最小宽度][.精度][长度]格式字符*/
char shuzu[7]="shuaige"; /*有的编译器会报错:数组越界*/
printf("You can output a string/n");
printf("i=%d,%c,%s/n",i,i,shuzu); /*结果是必须要'/n'才能换行*/
printf("b=%f,%lf,%5.4lf,%e/n",b,b,b,b);
"Hello world/n"
/*printf( //Turbo C 2.0里还不能这样用
world");*/
void Myputchar() /*只能输出单个字符*/
char b='B';
putchar('A');
putchar(Z);
putchar(b);
putchar(65);
putchar('/101'); /*C中有规定:/+数字==八进制的数,101转化成十进制的数65*/
putchar('/n');
void Myputs() /*只能输出字符串,不能输出数值或进行格式变换*/
char str[14]="see you latter";
puts(""); /*见鬼:这里怎么不自动换行*/
puts("zidonghuanhang"); /*会自动换行的*/
puts(str); /*怎么后面右跟乱码啊!*/
/*puts(str[0]);没报错,但是乱码*/
/*puts("%s",str);报错
puts("%c",str)*/
/*puts(str,str);不能接两个参数*/
void Mygetchar() /*显示的接受单个字符*/
i=getchar();
c=getchar();
putchar(i); /*如果输入的是:1然后敲空格,那么i=1;c=ASCII(Enter键)*/
putchar(c);
putchar(getchar()); /*直接作为参数,把读取的东西输出*/
printf("%c",getchar());
/*getchar()有一个int型的返回值。当程序调用getchar()时,程序就等着用户按键,用户输入的字符被存在键盘缓冲区中,
直到用户按回车键为止(回车字符也放在缓冲区中)。getchar()函数的返回值是用户输入的第一个字符串的ASCII码,如果
出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入不止一个字符,其它字符会保留在键盘缓冲区中,
等待后续getchar()函数调用读取。也就是说,后续的getchar()调用不会等待用户按键,而直接读取缓冲区中的字符,直到
缓冲区中的字符读完后,才等用户按键。此外,getchar()还可能读取scanf()遗留在缓冲区的"Enter按键",所以使用getchar()
前最好用fflush(stdin);清空输入缓冲区,若在GCC下只能while(getchar()!="/n") getchar();来消耗式清空输入缓冲区
void Mygetch()
i=getch();
c=getch();
putchar(i); /*如果输入的是:1然后敲空格,那么i=1;c=ASCII(Enter键)*/
putchar(c);
putchar(getch()); /*直接作为参数,把读取的东西输出*/
printf("%c",getch());
/*getch()没用到缓冲区,直接从键盘获取键值,不等待用户按回车键,只要用户按一个键,getch()就立刻返回,getch()返回值
是用户输入的ASCII,出错返回-1。输入的字符不回显在屏幕上。*/
/*conio.h里还有个getche()使用直接视频或BIOS,从键盘读取一个字符,将它 回显 到当前文本窗口相当于getch()+ECHO*/
void Mygets()
char s[20];
/*不能gets(s1,s2)*/
/*gets()和使用"%s"格式的scanf()函数都可以从键盘接受字符串,但输入时有区别:对于scanf(),"回车"或"空格"都看成字符串
结束标记;对于gets(),只有"回车"才作为字符串结束标记,"空格"看成字符串的一部分。*/
void Myscanf() /*一般形式,scanf(格式控制字符串,地址表列)*/
char b,c[20];
scanf("%d%c",&a,&b); /*格式:%[*][输入数据的宽度][长度]格式字符*/
scanf("%s",&c);
/*scanf("%s",c);这样也行,函数名、数组名做参数时,加不加&,得到的是相同的地址;c这个数组名在这退化成指向它首地址的指针了*/
printf("%d,%c,%s/n",a,b,c);
/*scanf("%8.2lf",&a);不能企图用它来控制精度*/
/*scanf("%d %*d %d",&a,&b);当输入1 2 3时,把1赋给a,2跳过,3赋给b*/
/*scanf("%5d",&a);当输入时,只是截取12345赋给a*/
/*scanf("%4d%4d",&a,&b);当输入时,a=1234,b=5678*/
/*scanf("%c%c%c",&a,&b,&c);输入:d e f时,a=d,b=' ',c=e*/
/*scanf("a=%d,b=%d c=%d");此时用户也要输入a=?,b=? c=?这种模式*/
/*在输入多个数值数据时,若格式控制串中没有非格式字符做输入数据之间的间隔,则可用空格、[Tab]
或回车做间隔。C编译在碰到空格、回车或非法数据时即认为该数据结束*/
int main()
Myprintf();
Myputchar();
Mygetchar(); /*输入比输出更头疼*/
Mygetch();
Myscanf();
/*见鬼getch的存在会影响printf("i=%d,%c,%s/n",i,i,shuzu);里面最后的字符串,会增加额外的乱码。
害得我每次我用getch()的时候都很小心的看有没副作用,高手路过请帮我解释下*/
本文标题:
本页链接:C语言复习题-_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言复习题-
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢您当前所在位置: >
> 编辑语言
C语言中函数的区分须知
这是我们为大家提供的一篇关于C语言中函数的区分的文章,接下来就让我们一起来了解一下吧!首先,这两个函数不是C标准库中的函数,int&getch(void)    //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符。也就是,不带回显。int&getche(void)&   //从标准输入读入一个字符,键盘输入的时候,屏幕显示所输入的字符。带回显。这两个函数包含在头文件conio.h中,需要记住的是conio.h不是C标准库中的头文件。Micorsoft&和&Borland的&C编译器提供了conio.h,用来创建控制台文本用户界面。一般在Windows系统下安装了VS、VC等,就可以包含conio.h头文件。但是一般在Unix、Linux系统中,&/&usr&/&include&/&中都没有这个头文件。getch和getche在等待用户从键盘输入的时候,用户按下一个键后,不需要按回车,程序自动往下执行。在Linux中,终端输入在缺省情况下是被“一锅端”的,也就是说整行输入是被一起处理的。通常,这是一种人们所希望的方便的办法,但它也意味着在读入数据时必须按一下回车键表示输入行结束后才能得到输入的数据。在游戏中,很多都提供了“老板键”,它的实现,就是利用了这两个函数。其次,除了getch和getche,其他的都是C标准库中的头文件,包含在头文件stdio.h中。int&fgetc&(&FILE&*stream&);&&//从流stream中读一个字符。可以将标准输入stdin作为它的实参,这时候从标准输入读取一个字符。int&getc(FILE&*stream);&&&&&&//和fgetc等效,由fgetc通过宏实现。int&getchar&(&void&);//从标准输入stdin读入一个字符,程序等待你输入的时候,你可以输入多个字符,回车后程序继续执行。//但getchar只读入一个字符说明:getc、getchar都是通过宏定义借助fgetc实现。如getchar的实现为,#define&getchar()&fgetc(stdin)。char&*fgets&(char&*str,&int&num,&FILE&*stream);//从流stream中读入最多num个字符到字符数组str中,当遇到换行符时、或读到num-1个字符时停止。//自动加上'\0'空字符结尾char&*gets&(&char&*str&);//从标准输入stdin读取一个字符串,遇到换行或结束时候终止。//不同于fgets,他没有指定num,所以需要注意字符数组str的大小。说明:&fgets和gets之间没有宏定义的关系,彼此各自有自己的实现。蠕虫病毒的实现就是函数gets的“功劳”。gets函数的任务是从流中读入一个字符串。它的调用者会告诉它把读入的字符串放在什么地方。但是,gets()函数并不检查缓冲区大小,如果调用者提供了一个指向堆栈的指针,并且get()函数读入的字符数量超过了超过了缓冲区的空间大小,get()会愉快地将多出来的字符继续写入到堆栈中,这就覆盖了堆栈中原来的内容。如:main(){char&line[512];&&&&//在程序的堆栈上分配512个字符的空间...gets(line);&&&&&&&&//蠕虫病毒的入口,可以将恶意代码通过多出来的数据写入堆栈}建议不要用getch和getche,因为它们不是C标准库中的函数。用它们写出的程序可移植性差,不同的编译器不保证可以包含conio.h。建议用fgets函数彻底替代gets函数。另外,绝大多数的这些get函数,都有对应的put版本。int&fputc&(&int&character,&FILE&*stream&);int&putc&(&int&character,&FILE&*stream&);&&&&&&&&//通过宏定义和fputc实现int&putchar&(&int&character&);//通过宏定义实现:#define&putchar(c)&fputc(c,&stdout)int&fputs&(&const&char&*str,&FILE&*stream&);int&puts&(&const&char&*str&);说明:两者之间无宏定义实现关系。puts(const&char&*str)近似等效于fputs(cosnt&char&*str,&stdout),不同点是前者还输出一个'\n'最后,关于EOFEOF是在stdio.h文件中定义的符号常量,值为&-1。如,fputc函数返回一个值:如果输出成功则返回值就是输出的字符;如果输出失败,则返回一个EOF。fgetc函数读字符时遇到文件结束符,函数返回一个文件结束标记EOF。如果想从一个磁盘文件顺序读入字符并在屏幕上显示,可以:ch&=&fgetc(fp);while(ch&!=&EOF){putchar(ch);ch&=&fgetc(fp);}注意,EOF不是可输出字符,因此不能在屏幕上显示。由于ASCII码不可能出现&-1,因此EOF定义为&-1是合适的。当读入的字符值等于&-1(即&EOF)时,表示读入的已不是正常的字符,而是文件结束符。但以上只适用于读取文本文件的情况。现在ANSI&C&已经允许用缓冲文件系统处理二进制文件,而读入某一个字节中的二进制数据的值有可能是&-1,而这又恰好是EOF的值。这就出现了需要读入有用数据,却处理为“文件结束”。feof(fp)&用来测试fp所指向的文件当前状态是否是“文件结束”。如果想顺序读入一个二进制文件数据,可以:while(!feof(fp)){c&=&fgetc(fp);...}===================================================三种字符输入getchar,getch,getche的区别(C语言)getch,getchar这两个以前用过,可是遇到了getche,头一次,此时用一小段代码部分测试就知道了。代码1:------------------------------------------------------------------------getch()#include#includeint main(){printf(&输入一个字符:&);ch=getch();printf(&\n你输入的字符是:'%c'\n&,ch);return 0;}--------------------------------------------------------------------小结:当我输入 6字符在下一行就显示了,我的 输入就没有输入& ,回车也没有代码2:-----------------------------------------------------------------getchar();#include#includeint main(){printf(&输入一个字符:&);ch=getchar();printf(&\n你输入的字符是:'%c'\n&,ch);return 0;}---------------------------------------------------------------------小结:我输入& 6之后& 回车 之后字符输入了进去,此时出现的输入显示,并且中间空格了代码3:--------------------------------------------------------------------------------------------------------getche();#include#includeint main(){printf(&输入一个字符:&);ch=getche();printf(&\n你输入的字符是:'%c'\n&,ch);return 0;}----------------------------------------------------------------------------------------------------小结:我只是输入了一个 6& 并没有回车,输入的字符显示,并且自动转入下一行继续执行。-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------经过上面的代码运行,以及运行之后的比较,三种字符输入,或多或少的有细微的差别,通过运行截图,已经看出来了。我想读者应当自己试试,才能有体会,其实测试代码很简单,也很模块化,试试看看吧!以上就是我们为大家提供的与C语言中函数的区分有关的文章,希望对大家有所帮助!
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新}

我要回帖

更多关于 c语言读取键盘输入 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信