输入输出
1.字符输出函数的用法
putchar(‘A’); 输出字符A
putchar('\n'); 输出换行
char a=’B’; putchar(a); 输出字符B
2.格式输出函数的用法
2.1pringf(“Hello world!”); //原样输出
printf(“%%”); //输出%
2.2pringf(“%[修饰符]格式符”,a); //输出指定格式
<格式符>
例如:
int a=567;printf ( “%d”,a); //十进制567
int a=255;printf(“%x”,a); //十六进制ff
int a=65;printf(“%o”,a); //八进制101
int a=567;printf(“%u”,a); //无符号数十进制567
char a=65;printf(“%c”,a); //单字符A
printf(“%s”,“ABC”); //字符串ABC
float a=567.789;printf(“%e”,a); //科学计数法5.677890e+02
float a=567.789;printf(“%f”,a); //浮点数567.789000
float a=567.789;printf(“%g”,a); //自动选择科学计数法与浮点数长度短的一个 567.789
<修饰符>
int a=1234;printf(“%8d,%2d\n”,a,a);
//第一个四个空格1234,第二个长度不够所以不变1234
float f=123.456;printf(“%f,%8f,%8.1f,%.2f\n”,f,f,f,f);
//第一个原样输出
//第二个保留八位有效数123.456001
(但是运行后展示9位,原因近似存储, 8表示输出字段的最小宽度为8个字符,这意味着如果实际的输出长度小于8,将会在左侧填充空格以达到总宽度;)
//第三个八位并保留一位小数 000123.5(0为空格,展示八位,点算一位,之后补全8个)
char ch=‘a’;printf(“%3c\n”,ch);
//00a(零表示空格)
char a[]=“Hello,world!”
printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);
//a.c: a表示共占多少位,c表示从左到右截取多少位
//第一个Hello,world!
//第二个000Hello,world!
//第三个00000Hello
//第四个Hello
//第五个Hel
补充:上述float f=123.456;printf(“%f,%8f,%8.1f,%.2f\n”,f,f,f,f);
print替换为printf(“%0f,%08f,%08.1f,%.02f\n”,f,f,f,f); 那么输出时候0来补充(不是空格补充)
3.字符输入函数的用法
int c; c=getchar(); printf("%c--%d\n", c, c);
注意:(1)int c;原因:char类型范围太窄
(2)正常,返回读取的代码值;出错或结束键盘输入,返回-1 (ctrl d)
4.格式输入函数的用法
scanf(“格式控制串”,地址表)
<格式控制串>
例子:
(1)scanf(“%4d%2d%2d”,&yy,&mm,&dd);
若输入19991015
则yy为1999, mm为10, dd为15
(2) scanf(“%2d%*3d%2d”,&a,&b);
若输入1234567
则a为12,b为67
注意:(%*3d)这样就会忽略中间的数
(3)ret=scanf(“%d%c%f”,&a,&b,&c);
若输入1234a123o.26
则a为1234, b为‘a’, c为123
注意:自动分离数据
(4)scanf(“%c%c%c”,&c1,&c2,&c3);
若输入a
<回车>bc
则c1为a, c2为回车, c3为b
注意:空格会被当作字符,在数字的时候空格是分隔符
(解决4)忽略空格,即不接受空格回车作为字符
方法一:
scanf(“%d”,&x);
getchar(); //中间接收一下回车
ch=getchar();
方法二:
scanf(“%d”,&x);
scanf(“ %c”,&ch); //加上空格即可忽略回车
方法三:
scanf(“%d”,&x);
scanf(“%*c%c”,&ch); //%*c忽略回车
这个*c应该是忽略中间的所有字符,只剩下最后一个
方法四:
scanf(“%d”,&x);
fflush(stdin); //清除缓存区 现在淘汰了不用了
scanf(“%d”,&y);
清理缓存的非数字:while (getchar() != '\n');
字符串输入输出
- 字符串输入函数
格式: char * gets(char *s)
功能:从键盘输入一以回车结束的字符串放入字符数组中,自动加’\0’
注意:不要溢出,gets不以空格作字符串结束标志,以回车<scanf以回车空格作结束>
gets(string);
printf(“%s\n”, string);
- 字符串输出函数
格式:int puts(const char *s)
注意:字符数组必须以’\0’结束
char string[80] = “How are you”;
puts(string);