在任何编程语言中,变量的赋值以及处理后的输出都可以通过两种方式来完成:
∮通过标准输入/输出媒体
∮通过文件
通常来说,输入和输出工厂呢感了程序的重要部分。能够接受输入数据并报告结果的程序才能称的上是有用的程序。在C语言中,标准库提供了输入和输出功能。标准库提供I/O函数来处理输入、输出以及字符和字符串操作。
头文件<stdio.h>
#include<stdio.h>
这是预处理命令。在标准C语言中,符号#应该位于第一列。stdio.h是一个文件,并且称为头文件。其中包含了许多对应于C语言中使用的输入输出函数的内容。
C语言中的输入和输出
C语言的标准库提供了两个执行带格式输入和输出的函数。
§printf()-用于带格式输出
§scanf()-用于带格式输入
因为这两个函数能以用户控制下的各种预指定格式读入和输出数据,因此被称为带格式函数。格式说明符指定了变量值的输入和输出格式。
4.1 printf()
函数pringf()用于在标准输出(即控制台)上显示数据。
通用格式是:
printf("control string",argument list);
其中,control strint是控制字符串,argument list是参数列表。
参数列表由逗号分隔的常量、变量、表达式或函数组成。对列表中的每个参数,在控制字符串中都需要有一个格式命令。格式命令与参数列表需要在数量、类型和顺序上匹配。控制字符串需要由双引号(" ")(控制字符串的界定符)括起来。控制字符串由以下三类项目中的一项或多项组成:
§文本字符和空格-由可输入字符组成,并且字符输出效果与其自身的显示相同。输出字段之间通常用空格分隔。
§格式命令-定义了参数表中数据项的显示方式。格式命令由符号%开始,随后紧跟着与数据乡相应的格式代码。函数printf()使用符号%来识别转换规范。格式命令和数据项顺序匹配,并且键入方向为从左至右。对要输入的每个数据项都要求有一个格式代码。
§非打印字符-包括制表符、空格和新行。
每个格式命令由一个或多个格式代码组成。格式代码由符号%和类型说明符组成。
printf()格式代码
格式 printf() scanf()
单字符 %c %c
字符串 %s %s
带符号的十进制整数 %d %d
浮点(十进制记数法) %f %f或%e
浮点(十进制记数法) %lf %lf
浮点(指数记数法) %e %f或%e
浮点(%f或%e中较短的一个) %g
不带符号的十进制整数 %u %u
不带符号的十六进制证书(使用“ABCDEF”) %x %x
不带符号的八进制整数 %o %o
输出约定
格式代码 输出约定
%d 整数位数。
%f 数字的整数部分如实输出,小数部分保留6位,末尾填零;否则四舍五入取到6位
%e 小数点左侧保留一位数字,右侧保留6位数字(与上面的%f相同)
控制字符串中的特殊字符
\\ 输出\字符
\" 输出“字符
%% 输出%字符
用于printf()格式命令的修饰符
格式命令可以有修饰符,用以适当的修改基本转换规范。
"-"修饰符
数据项在其范围内向左对齐,并从该范围做左侧的位置开始输出。
范围宽度修饰符
可以用在浮点型、双精度型或字符数组(字符串)中。范围宽度修饰符用一个数字表示,定义了数据项的最小范围宽度。宽度较小的数据项将以字段内右对齐的方式输出。根据需要使用额外位置来输出较大的数据项。
精度修饰符
此修饰符可以用在浮点型、双精度型和字符串数组中。修饰符以.m的形式书写,其中.m是整数。
"0"修饰符
范围中的默认填充字符是空格。如果拥护希望用零填充空白区域,需要使用此修饰符。
“l”修饰符
可以用此修饰符将整数显示为长型或双精度型参数。格式代码为%ld
"h"修饰符
用此修饰符表示短整数。格式代码为%hd
"*"修饰符
如果用户不想预先指定范围宽度,但希望程序指定,则可以使用此修饰符。但是,需要同时指定一个参数来确定范围的宽度。
当使用%10d时,字段的宽度为10个空格。
在%f默认情况下,保留了六个小数位。
%e的默认规范是小数点左侧保留一位,小数点右侧保留六位。
4.2 scanf()
scanf()函数用语接受数据。
scanf()函数的格式为:
scanf("control string",argument list);
printf()语句中使用的格式极其语法同样适用与scanf()语句。
printf()和scanf()的参数列表之间的区别
printf()使用变量名、常量、符号常量和表达式,但scanf()使用变量的指针。变量指针是包含地址的数据项,这个地址是内存中存储变量的位置。
使用scanf()时,对于参数列表,应遵循以下规则:
§如果要度曲基本数据类型变量的值,应在变量名之前键入&。
§当读取指针变量指向的值时,在变量名前不能使用&。
printf()和scanf()的格式命令之间的区别
1.没有%g选项。
2.格式代码%f和%e在效果上是一样的。无论带不带符号、数字串带不带小数点以及是否存在指数部分,这两个函数都接受。
示例:
#include<stdio.h>
void main()
{
char line[80];
…………
scanf("%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]",line);
…………
}
格式代码%[]意味着只有在[]中定义的字符才能作为有效字符串被接受。
4.3 getchar()
函数getchar()用于从键盘读取输入数据,切每次只读取一个字符。在大多数C程序的执行过程中,getchar()缓冲字符直到用户按下回车键。因此,它会等待,知道回车键按下。函数getchar()不带参数,但仍然必须带括号。它只是取得下一个字符并使之为程序可用。函数返回一个字符形式的值。
4.4 putchar()
putchar()是C中的字符输出函数,它在屏幕的光标处显示一个字符。此函数需要参数。
putchar()函数的参数可以是下面所列出的任何一种:
§单字符常量
§转义顺序
§字符变量
参数 函数 效果
字符变量 putchar(c) 显示字符变量C的内容
字符常量 putchar(‘A’) 显示字母A
数字常量 putchar(‘5’) 显示数字5
转义序列 putchar(‘\n’) 在光标位置插入回车