学了两个月的C语言,看到论坛里有好多关于 scanf ,gets,getch,puts,getchar,putchar 用法的帖子,回复的也参差不齐,大致总结了
学了两个月的C语言,看到论坛里有好多关于scanf ,gets,getch,puts,getchar,putchar用法的帖子,回复的也参差不齐,大致总结了一下,初次发帖,希望大家多多指教!这几类函数都是常用的输入输出函数,其中输入函数是scanf,gets,getch,getchar;输出函数为puts,putchar,此外还有printf。
首先说一下每个函数的功能吧!
scanf:当输入的信息为数据时,结束的标志为:
1.格式输出字符串之间的分隔符,使用默认的分隔符即为空格Tab键或者是回车键。
2.当遇到指定宽度时和非法输入。
当输入信息以%c输入时,空格和转义字符都为合法字符,结束标志为tab,回车键。
gets:作用输入一个字符串到指定的字符数组,输入时用回车键结束,并且系统在最后自动追加‘\0’。
getch:只是输入设备读取一个字符,不必用回车,不在屏幕上显示。
putchar:输入一个字符,putchar(c),c为整数时,则返回整数代表的ASCLL码值。
getchar:使用此函数时,显示键入的一个字符,并且回车键结束。
puts:输出字符数组的字符串输出。
其中,putchar,getchar,getch都是针对一个字符的函数,这些只是输入输出一个字符而已。(个人认为是这样,大神请多多指点!)
puts,就是一个输出函数,输出数组中的所有元素,省去了用循环的方法输出数组的方法。
主要要区别:scanf,gets,这两个函数都是可以输入单个字符和字符串的,输入字符串是针对数组,首先要定义数组,scanf输入字符串,以%s的形式输入,但是这时空格将作为结束标志,所以如果想要输入带空格字符串,就要多申请几个数组存放。这里数组要留出一个空间存放‘\0’。gets函数解决了scanf以%s输入时空格的问题,就是不用申请多个数组存放,它认为空格为合法的输入字符,遇到回车结束。
(据说这里边有个漏洞,就是可以无限的输入,直至数据存满内存,电脑崩溃,还有人利用了这个漏洞制造了病毒……)
第一次发帖,总结不全,也有不准确的地方,希望大家多多建议!