文章目录
- 一、高级输入输出
- 1.printf()
- 2.scanf()
- 二、简单输入输出
- 1.putchar()
- 2.puts()
- 3.getchar()
- 4.gets()
- 总结
一、高级输入输出
格式化输入输出函数,能够对各种类型的数据混合地输入输出,主要是依靠一个格式控制字符串来实现的。在格式控制字符串内通过%符号加字母,对输入输出的目标数据的类型进行预先标明。
1.printf()控制字符串内的每个%后面必须跟一个控制字符
参数列表中的参数都必须与控制字符的个数和类型相匹配
控制字符:
| 格式 | 符号 |
|---|---|
| 字符 | %c |
| 字符串 | %s |
| 有符号十进制整数 | %d |
| 有符号十进制整数 | %u |
| 单精度浮点数 | %f |
| 双精度浮点数 | %lf |
| 无符号十六进制整数 | %x |
| 无符号八进制整数 | %o |
| 变量地址 | %p |
a)在printf函数的控制串内,%符号与控制符之间的数字是用来控制占位的。
例如:printf(“%8.3f”,34.678f);
8代表包括小数点总共占用8个空位,.3代表保留3位小数打印。
b)%之后带-符号代表在所占用的空间内左对齐,缺省不带-符号是右对齐。
例如:printf(“价格=%-8.3f”,34.67f);
还是占用8个空位但是,与前面不同之处是左对齐。
c)如果%后面是0.x代表不占用多余空位,只控制保留的小数位。
例如:printf(“价格=%0.3f”,34.6f);
以上是printf函数对于浮点数的占位和对其管理。
d)对于整数和字符串输出只有占位控制和对齐控制,没有小数点后面的控制。
例如:printf(“学号:%-8d姓名:%-10sn”);
8和10代表的是占位管理,-符号代表左对齐,缺省不带-符号是右对齐。
控制字符串内的每个%后面必须跟一个控制字符,参数列表中的参数都必须与控制字符的个数和类型相匹配
scanf函数的控制串内,除了控制符(%号加一个字母)之外,其余的文字都应该算作是间隔符。例如:两段控制符之间用空格间隔,用户输入数据时就必须用空格间隔;如果两段控制符之间用逗号,用户输入时就必须用逗号间隔;如果两段控制符之间没有间隔符,缺省用户还是要用空格做间隔符。
scanf的参数列表中,每一个变量之前都必须要带上取地址符号(&),(只有数组变量可以不用取地址,因为数组变量自身就是一个内存地址。
控制字符:
| 格式 | 符号 |
|---|---|
| 字符 | %c |
| 字符串 | %s |
| 有符号十进制整数 | %d |
| 有符号十进制整数 | %u |
| 单精度浮点数 | %f |
| 双精度浮点数 | %lf |
| 无符号十六进制整数 | %x |
| 无符号八进制整数 | %o |
| 变量地址 | %p |
将指定的(表达式的值所对应的)字符输出到标准输出终端(屏幕)上。
输出的是对应ascii的字符
putchar(‘a’+3); 打印的结果是d,是一个字符而不是数值。 putchar(99); 打印的结果是c,代入一个数字打印出的是一个字符。2.puts()
只有一个参数,可以是字符指针变量名、字符数组名,或者直接是一个字符串常量。
功能是将字符串输出到屏幕。输出时只有遇到 ‘ ’ 也就是字符串结束标志符才会停止。
puts("hello world"); 字符串常量
char str[] = "hello world"; 字符数组
puts(str)
3.getchar()
获取一个字符,返回int类型对应字符ascii码值
int c = getchar(); 输入a,返回974.gets()
读取字符串,只有一个参数。参数类型为 char* 型,即 str 可以是一个字符指针变量名,也可以是一个字符数组名。
char str[]; gets(str)
总结



