输入输出函数
输入输出函数
Mxne输入函数
scanf
scanf函数可以从标准输入(键盘)读取输入,并根据指定的格式字符串将输入转换成相应的数据类型。它的语法为:
1 | int scanf(const char *format, ...) |
其中,format是一个字符串,包含了要读取的数据类型和格式信息,以及一些控制字符。…表示可变参数列表,对应format中的格式字符串,用于存储读取到的数据。
例如,下面的代码可以从键盘读取一个整数,并将其存储到变量x中:
1 | scanf("%d", &x); |
scanf函数的优点是可以方便地读取不同类型的数据,并且可以指定输入格式,从而保证读取的数据正确。但它的缺点是比较容易出现输入错误或格式错误,需要特别小心。
使用scanf()
函数输入多个数据时,可以使用空格、制表符或换行符来分隔scanf输入的多个数据项,但是对于格式字符串中的各种格式字符,需要按照格式字符串的分隔符来分隔输入数据项。
getchar
getchar函数可以从标准输入(键盘)读取一个字符,并返回该字符的ASCII码值。它的语法为:
1 | int getchar(void); //getchar()无参数 |
注意:无论我们输入(回车空格都读)什么,getchar只会将其当作一个字符来处理,然后将其转换成相应的ascii码值,然后转成二进制数据,存入到变量所开辟的空间中!即使我们输入多个字符,getchar也只会将接收到的首个字符将其存入到变量开辟的内存空间中。
为什么返回字符的ascil码?
我们的字符存入到变量当中时,本质上是将字符的ascii码值存入到变量所开辟的内存空间中
实例
1 |
|
使用getchar读取多个字符并存储在一个字符数组中
1 |
|
总结:getchar函数的优点是比较简单易用,可以用来读取单个字符。但它的缺点是不支持读取其他类型的数据,而且每次只能读取一个字符。
gets
gets函数可以从标准输入(键盘)读取一个字符串,并将其存储到指定的字符数组中。它的语法为:
1 | char *gets(char *str); |
其中,str是一个字符数组,用于存储读取到的字符串。gets函数会读取从键盘输入的字符串,并将其存储到str中,直到读取到换行符为止(换行符不会被存储在数组中,也可以理解为自动将换行转换为‘\0’)。如果读取的字符串超过了数组的大小,会导致缓冲区溢出,从而引起程序错误。
例如,下面的代码可以从键盘读取一个字符串,并输出它:
1 | char str[100]; |
gets函数的优点是可以方便地读取字符串,但它的缺点是不支持指定输入格式,从而可能导致读取错误或缓冲区溢出。为了避免这些问题,通常建议使用更加安全的fgets函数来代替gets函数。
输入函数总结
- scanf可以读取各种类型的数据,但需要指定格式字符串,并且要用&符号获取变量的地址。
- gets用于读取一行字符串,但容易引起缓冲区溢出的问题,不推荐使用。
- getchar用于读取单个字符,可用于读取多个字符并存储在字符数组中。
输出函数
printf
printf函数是最常用的输出函数之一,它的原型如下:
1 | int printf(const char *format, ...); |
其中,format
参数是一个格式化字符串,可以包含占位符%
,后面的参数是要输出的数据。printf函数会将格式化字符串中的占位符替换成相应的参数,并将结果输出到标准输出流(通常是控制台)。
printf函数可以输出各种格式的数据,如整型、浮点型、字符型、字符串等等。它也支持一些格式化选项,比如指定输出的宽度、精度等等。
putchar
putchar函数是将一个字符输出到标准输出流(通常是控制台)的函数,它的原型如下:
1 | int putchar(int c); |
其中,c
参数是要输出的字符。putchar函数将指定的字符输出到标准输出流,并 返回输出的字符的ASCII码值。
实例
1 |
|
解析:输入缓冲区的概念,getchar读取字符的时候,它并不是直接就从键盘上进行读取的,它首先要看一看输入缓冲区中是否有数据,如果没有,才会从键盘上进行读取数据, 当我们在上面这个程序中输入密码结束后,我们会在键盘上敲击一个回车进行换行,这也标志着我们的输入结束,这个回车本身并没有被放入到我们输入的字符串中去,而是被放入到了输入缓冲区中去,当getchar进行读取字符时,首先看输入缓冲区,发现输入缓冲区并不为空,然后就将输入缓冲区中的回车字符读取了,存入到了变量ch中,进而判定后不等于字符Y,所以会输出“确认失败!”。
总结:getchar先看输入缓冲区,输入缓冲区没有数据,再看键盘。
如何避免上面的麻烦?
在getchar()确认密码前用一个getchar()将输入缓冲区的回车键吸收即可!
1 |
|
puts函数
puts函数也是将字符串输出到标准输出流的函数,它的原型如下:
1 | int puts(const char *s); |
其中,s
参数是要输出的字符串,puts函数将它输出到标准输出流(通常是控制台)。puts函数会在输出的字符串末尾自动添加一个换行符\n
,并返回非负整数,表示输出的字符数(不包括换行符)。
输出函数总结
- printf函数可以输出各种格式的数据,并支持格式化选项,灵活性更高;
- putchar函数只能输出一个字符,并返回输出的字符的ASCII码值;
- puts函数只能输出字符串,并自动在末尾添加一个换行符。