字符输入输出函数:
1 字符串
1.1 字符串输入
gets
用gets输入字符串,没有预定的长度,为了知道输入何时结束,解决的办法是读字符串,直到遇到一个换行(\n),按回车键可以结束输入,它读取换行符之前(不包括换行符)的所有字符,在这些字符后添加一个空字符(\0),然后把这个字符串交给调用它的程序它将读取换行符并将其丢弃
缺点:不检查预留有存储区是否能够容纳实际输入的数据,多出来的字符简单地溢出到相邻的内存区,fgets改进了这个问题。
fgets
- 他需要第二个参数来说明最大读入字符数,如果这个参数值为n,fgets()就会读取最多n-1个字符或者读完一个换行符为止,由这二者中最先满足的那个结束输入。
- 如果fgets()读取到换行符,就会把它存到字符串里,而不是像gets()那样丢弃换行符。
- 它还需要第三个参数来说明读哪个文件,从键盘上读数据时,可以使用stdin作为该参数如:fgets( name , Max , stdin); 。
缺点:由于fgets把(\n)也当做输入字符,所以输出时,每遇到(\n)就自动换行,可以用strchr来定位和删除换行符。
scanf
- 带有%S格式scanf()函数来读入-一个字符申,带有%C可读取-一个字符,此时空格符也算一个字符所以输入是要注意了。
- scanf()使用2种方法决定输入结束。
1.遇到第一个空格,制表符,换行符
2.如果指定了字段宽度,比如%10s,则scanf()就会读入10个字符,或知道遇到第一个空白字符,二者最先满足的那个终止输入
3.scanf函数返回的是一个整数值,是成功读取的项目数or当遇到文件结束时返回EOF。
1.2 字符串输出
puts
与printf不同,puts显示字符串是自动在其后添加一个换行符,puts遇到空字符时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止。
fputs
- fputs函数需要第二个参数来说明需要写的文件,可以使用stdout作为参数来进行输出stdout在stdio.h中定义了。
- 与puts不同,fputs并不为输出自动添加换行符。
printf
可以格式化多种数据类型,更常用
1.3 各函数的比较
- gets()丢弃输入的换行符
- puts()为输出添加换行符
- fgets()存储输入的换行符
- fputs()不为输出添加换行符
2 字符
2.1 字符输入
getch
从键盘键入字符结束后,既不带缓冲区有不带回显
getche
从键盘键入字符结束后,既不带缓冲区而有带回显
putchar
从键盘键入字符结束后,既带缓冲区有带回显
2.2 字符输出
putcher
getchar()和putchar()的区别:
getchar()无参数,函数的返回输入的字符。如:
a = getchar();
putchar()有参数,如char c; putchar©; putchar(‘C’);