C 语言标准函数库中,提供了关于以下几种输出函数:
(1)简单字符输出输入;(2)多种格式输出输入; (3)简单字符串输入输出;
注:所有标准输入输出函数在调用前,必须先包含头文件stdio.h
一、简单字符输出输入
输出函数为putchar函数、putc函数,其中putc函数包含了putchar函数的功能
putc(a,stdout); //将输出97,ASCII码表中,97对应的字符为a。等价于putchar(a);
输入函数为getchar函数、getc函数,其中getc函数包含了getchar函数的功能
getc(stdin); //读取键盘输入的单个字符,等价于getchar();
注:使用该函数之前,若有类似的操作最好调用fflush函数清理输入流:fflush(stdin);
二、多种格式输出输入
1.printf函数:可以输出字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义
int a=100;
printf("%d",a); //100
char c='b';
printf("%c",c); //b 等价于putchar(c);
printf函数打印时的占位控制:
(1)在printf函数的控制串内,%符号与控制符之间的数字是用来控制占位的。
例如:printf(“%8.3f”,34.678f);
8代表包括小数点总共占用8个空位,.3代表保留3位小数打印。
(2)%之后带-符号代表在所占用的空间内左对齐,缺省不带-符号是右对齐。
例如:printf(“价格=%-8.3f”,34.67f);
还是占用8个空位但是,与前面不同之处是左对齐。
(3)如果%后面是0.x代表不占用多余空位,只控制保留的小数位。
例如:printf(“价格=%0.3f”,34.6f);
以上是printf函数对于浮点数的占位和对其管理。
(4)对于整数和字符串输出只有占位控制和对齐控制,没有小数点后面的控制。
例如:printf(“学号:%-8d姓名:%-10s\n”);
8和10代表的是占位管理,-符号代表左对齐,缺省不带-符号是右对齐。
2.scanf函数:格式化输入函数,即按控制字符串内指定的各种格式,从键盘上把数据输入到指定的变量之中
(1)与printf函数的相同之处:
控制字符串内的每个%后面必须跟一个控制字符,参数列表中的参数都必须与控制字符的个数和类型相匹配
(2)与print函数的不同之处:
scanf的参数列表中,每一个变量之前都必须要带上取地址符号(&)。代表要将参数列表中所有变量的地址一一
传递给系统,操作系统要按照给定变量的地址,将用户输入的数据传递给参数列表中每一个对应的变量。(只有
数组变量可以不用取地址,因为数组变量自身就是一个内存地址。
而printf的参数列表中,所有变量是不用取地址直接代入的。如果scanf函数像直接代入变量不取地址,执行时会
因数据送错地址造成整个程序崩溃。
另外一点与printf不同之处是:scanf的控制字符串内除了控制字符以外,只能指定间隔符空格或逗号。不能像
printf函数那样,随意在控制字符之间夹杂其他的文字。
int c;
scanf("%c",&c); //等价于getchar(c);
3.printf和scanf的常用格式化符号:
三、简单字符串输入输出%c :单字符 %s:字符串 %d:有符号的十进制整数 %u:无符号的十进制整数
%f:单精度浮点数 %lf:双精度浮点数 %x:无符号的十六进制整数 %o:无符号的八进制整数
1.gets函数:从stdin流中读取字符串,类似于scanf(“%s”,&x);。
2.puts函数:用来向标准输出设备写字符串并换行,类似于printf(“%s\n”,x);
注:本文为学习总结,学习的资源来源于吕鑫老师的C语言教程。
#include<stdio.h>
int main(){
int a;
char b[20];
char c[20];
printf("通过getc和putchar:");
a=getc(stdin);
putchar(a);
putchar('\n');
fflush(stdin); //清理输入流
puts("通过gets和puts:");
gets(b);
puts(b);
fflush(stdin); //清理输入流
printf("通过printf和scanf:");
scanf("%s",c);
printf("%s\n",c);
return 0;
}