1.按字符输入输出
1.1 按字符输出 putchar()
int putchar(int c);
功能:向终端输出一个字符
参数:c:要输出字符的ASCII值
返回值:要输出字符的ASCII值。当输出错误的时候,返回 EOF(End of file)文件结束符分
#include <stdio.h>
int main()
{
int a=10;
putchar('A');//输出字符A
putchar(97);//用ASCII输出字符a
putchar('\n');//换行
putchar('A'+32);//a
putchar(a);//换行
return 0;
}
1.2 按字符输入 getchar()
int getchar(void);
功能:从终端输入一个字符
参数:无
返回值:输入字符的ASCII值。如果到达文件末尾或发生读错误,则返回 EOF。
#include <stdio.h>
int main()
{
int ch;
ch = getchar(); //获得getchar()的返回值然后赋值给ch变量
putchar(ch);
ch = getchar();
putchar(ch);
return 0;
}
2.按格式输入输出
2.1 按格式输出printf()
2.1.1 介绍
查看手册用man 3 printf:
int printf(const char *format, ...);
功能:按照指定格式向终端输出
参数:format:用双引号括起来的格式控制串和输出表。
返回值:输出字符的个数(不常用)
2.1.2 格式
printf("格式控制串", 输出表);
格式控制串:包含两种信息
- 普通字符:原样输出
- 格式说明: 修饰符%后面加格式字符,用于指定输出格式。
输出表:要输出的数据(可以没有,多个时用逗号分隔)
2.1.3格式字符
%d int
%ld long
%f float
%lf double
%c char
%s 字符串
%x 十六进制
%o 八进制
%u 十进制无符号整数
%p 地址
%e 指数
%m.n含义:
.n: 对实数指定小数点后的位数(四舍五入)
对字符串,指定实际输出的位数
m: 位宽,输出数据的域宽,数据长度<m, 左边补空格,否则按实际输出。
-: 左对齐,默认右对齐
0:输入数值时时指定左边不用的空位置自动补0
2.2 按格式输入scanf()
2.2.1 介绍
int scanf(const char *format, ...);
功能:按格式从终端输入
参数:同printf
返回值:正确输入数据的个数。当第一个数输入格式不正确时,会直接返回0。
2.2.2 格式
scanf("格式控制串", 地址表);
地址表:变量的地址,常用取地址运算符&
格式字符:d o x u c s f e
例如:
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a= %d, b= %d\n", a, b);
return 0;
}
注意:用scanf时“”中不要写上除了格式控制字符以外的东西,不然输入的时候要按原样输入才可以。
2.2.3 垃圾字符问题
注意:
scanf函数输入回车符的问题,当用%c方式输入字符时,回车符会被下次的%c接收到。其他给格式不会出现这种问题。
例1: 连续输入两个char类型:
char a, b;
scanf("%c", &a);
printf("%c\n", a);
scanf("%c", &b);
printf("%c\n", b);
第二次输入会读到回车
例2:连续输入两个int类型:
int a, b;
scanf("%d", &a);
printf("%d\n", a);
scanf("%d", &b);
printf("%d\n", b);
因为两次输入的都是int类型,下次输入就不会读到char类型的回车。
例3:先输入int类型在输入char类型:
int a;
char c;
scanf("%d", &a);
printf("%d\n", a);
scanf("%c", &c);
printf("%c\n", c);
第二次输入会直接读到回车
综上:只要第二次想输入char类型就会接收上次的回车。
回收垃圾字符方法:
可以回收一个或多个空格、回车和tab
int a;
char c;
scanf("%d", &a);
printf("%d\n", a);
scanf(" %c", &c);
printf("%c\n", c);
(2)%*c
int a;
char c;
scanf("%d", &a);
printf("%d\n", a);
scanf("%*c%c", &c);
printf("%c\n", c);
(3)getchar()
只能回收任意一个字符,一般用于循环里面
int a;
char c;
scanf("%d", &a);
getchar();
printf("%d\n", a);
scanf("%c", &c);
printf("%c\n", c);