1.输入输出
1.1.按格式 输入输出
printf
可以在man手册中查看
int printf(const char *format, ...);
printf:函数名(参数)int:函数的返回值
功能:按格式在终端输出
参数:多参
返回值:输出字符个数
格式:
%d int
%c char
%f float
%lf double
%s 字符串
%p 地址
%o %#o 八进制
%x%#x 十六进制
/4.5f : 4表示位宽(域长),.后面表示精度
scanf
输入函数
int scanf(const char *format, ...);
功能:按格式向终端输入
参数:多参
返回值:正确输入字符个数
#include<stdio.h>
int main(int argc, char const *argv[])
{
int a = 0,b = 0;
char c = 0;
scanf("%d %d %c",&a,&b,&c);
getchar();
printf("%d,%d,%c\n",a,b,c);
return 0;
}
1.2. 按照字符输入输出
g e t c h a r
int getchar(void);
功能:终端输入一个字符
参数:无
返回值:输入的字符的ASCII码值
putchar
int putchar(int c);
功能:终端输出一个字符
参数:字符的ASCII码值
返回值:字符的ASCII码值
#include<stdio.h>
int main(int argc, char const *argv[])
{
// getchar();
putchar(65);
putchar(10);
char res = getchar();//输入多个,识别第一个
putchar(res);//只适用于单个字符输入输出,ascii码值为中间衔接
putchar(10);//换行
getchar();//终端输入字符,同时回收一个或者多个空格,验证2是不是字符
printf("%d",getchar());//回收字符
putchar(10);
return 0;
}
scanf("%d %d%*c%c",&a,&b,&c);//%*c可以回收任何一个字符
#include<stdio.h>
int main(int argc, char const *argv[])
{
// getchar();
putchar(65);
putchar(10);
char res = getchar();//输入多个,识别第一个
putchar(res);//只适用于单个字符输入输出,ascii码值为中间衔接
putchar(10);//换行
getchar();//终端输入字符,同时回收一个或者多个空格,验证2是不是字符
printf("%d",getchar());//回收字符
putchar(10);
//或者
getchar();
int res2 = getchar();//直接赋值回收的上一个字符
printf("%d\n",res2);
return 0;
}
2.垃圾字符回收
- 通过空格回收一个或多个空格、tab
char a=0,b=0;
scanf("%c%c",&a,&b);
printf("a:%c b:%d\n",a,b);
解决:
- 通过%*c*抑制符(了解)
回收任意一个字符
char a=0,b=0;
scanf("%c%*c%c",&a,&b);
printf("a:%c b:%d\n",a,b);
- 通过getchar回收scanf的换行
while(1)
{
char a=0;
scanf("%c",&a);
getchar();
printf("%c\n",a);
}
==============================
char a=0;
scanf("%c",&a);
getchar();
printf("%c\n",a);
char b=0;
scanf("%c",&b);
printf("%c\n",b);