基本语句
一. 控制台输入输出语句
头文件stdio.h内置了几种输入输出函数:
- scanf()和 printf()
- getchar() 和 putchar()
- gets() 和 puts()
1. 数据格式的输入与输出
格式化输出函数 printf()
- 功能:是向终端(或者系统隐含指定的输出设备)按指定格式输出若干数据
- printf()函数是从右开始输出的
- printf ()函数的一般形式
- 格式说明:“%+附加格式+格式字符”
- 附加格式
附加格式说明字符 | 说明 |
- | 输出的数字或字符以左对齐,右边填空格 |
0(数字) | 输出的空位用0填充。 |
m(一个正整数) | 输出数据的字段宽度。如果实际位数多于m,按实际位数输出;如果实际位数少于m,则补以空格或0。 |
.n(一个正整数) | 对实数,表示输出n位小数;对字符串,表示截取的字符个数。 |
l(字母) | 输出长整型整数 |
- 格式字符
%格式字符——意义
%d —— 以带符号的十进制形式输出整数
%o —— 以无符号的八进制形式输出整数
%x —— 以无符号的十六进制形式输出整数
%u —— 以无符号的十进制形式输出整数
%c —— 以字符形式输出单个字符
%s —— 输出字符串
%f —— 以小数点形式输出单、双精度实数
%e —— 以标准指数形式输出单、双精度实数
%g —— 选用输出宽度较小的格式输出实数
- 为什么需要输出控制字符
- 使用printf的注意事项
格式化输入函数scanf()
- 功能:scanf函数只能在控制台程序中使用,有窗口的界面程序无法通过scanf接收按键。当控制台中出现闪烁的光标时,表示程序在等待用户输入数据。在控制台程序中,一般以回车键代表数据输入完毕,下达命令,指示程序开始工作,然后以存入以输入参数的值为地址的变量中。scanf函数可以接收多个任意类型的数据,但需严格遵守format格式,否则会出错。
注意:如果数据不止一个,应在数据之间用一个或多个空格间隔,也可以用回车键或跳格键tab间隔。 - scanf()函数的一般形式
- scanf()中的格式控制
“%格式字符”——意义
格式符 | 说明 |
d | 用于输入十进制整数 |
o | 用于输入八进制形整数 |
x | 用于输入十六进制整数 |
c | 用于输入一个字符 |
s | 用于将字符串一次输入到一个字符数组中。输入时以非空白字符开始, 第一个空白字符结束。字符串以串结束标志’\0’作为其最后一个字符。(字符串长度不包括最后一个空字符’\0’) |
f | 用于输入实数。输入时用小数点形式或指数形式均可。(输入双精度必须用%lf,否则不能正常输入) |
e | 与f作用相同 |
- scanf()中的附加格式字符
“% 附加格式字符 格式字符”——意义
附加格式字符 | 说明 |
* | 表示本输入项在输入后不赋给相应的变量。(不存储) |
l(字母) | 用于输入长整型和双精度实型数据 |
m(一个正整数) | 用于指定输入数据的长度 |
- 使用scanf()函数时注意事项
- 如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。
- 在用%c格式符时,空格字符和转义字符都被当作有效字符输入
- 以回车作为下达开始解析命令。整个输入以回车结束。如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。若实际输入数据多于输入项的个数,多于的数据将留在缓冲区备用,作为下一次输入操作的数据。
- 在输入数据是,遇到以下情况时认为一次输入结束:空格、回车、Tap键,上述字符统一称为“间隔符”。
- 注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。
- 使用scanf之前最好先用printf提示用户以什么样的方式输入
- scanf中尽量不要使用非输入控制符,尤其不要用 \n
2. 单个字符数据的输入输出
有些时候,仅仅为了在显示器屏幕上打印或从控制台获取一个字符,此时使用功能强大的printf与scanf函数,则显得过于繁琐,C提供了一个库函数putchar/getchar来完成这个简单的任务。
单个字符输出函数putchar()
- 功能:putchar()函数作用在显示器上打印单个字符
- 一般格式:putchar(字符数据);
- 可以输出的字符类型
- 字符数据可以是一个字符型变量
- 字符数据也可以是一个字符常量
- 字符数据还可以是一个整数。整数可以是十进制整数。
- 字符数据还可以是一个表达式,只要结果是255以内的整数即可。
- 字符数据可以是转义字符。
单个字符输入函数getchar()
- 功能:getchar()函数作用是得到用户终端输入(读入)的一个字符
- getchar()函数一般格式:
3. 字符串数据输入输出
字符串输出函数puts()
- 功能:在显示器屏幕上输出一个字符串,并换行(光标移动到下一行),会以’\0’字符作为该字符串的结束。
- 因为是函数,所以要传入的参数是字符数组的变量名
- 一般形式:
puts(字符串);
或者
puts(字符数组名或指针)
字符串输入函数gets() (从用户终端读入字符串)
- 功能:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 ‘\0’ 空字符,并由此来结束字符串。
- 返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。
- 使用gets()函数的注意事项
- 例子
二. 文件的读写
1. 读写一个字符
字符写函数 fputc(c,fp);
字符读函数 fgetc(fp);
2. 块读写
二进制写函数 fwrite(buffer,size,count,fp);
二进制读函数 fread(buffer,size,count,fp);
格式化写函数 fprintf(文件指针,格式字符串,输出项表列);
格式化读函数 fscanf(文件指针,格式字符串,地址参数列表);
3. 其他读写函数
磁盘文件写函数 putw(10,fp);
磁盘文件读函数 getw(fp);
文件字符串写函数 fputs(字符串,文件指针);
文件字符串读函数 fgets(字符串数组名,n,文件指针);