六. 输入输出
6.1 数据输出
C语言无I/O语句,I/O操作由函数实现
#include <stdio.h>
字符输出函数
格式:putchar(c)
参数:c为字符常量,变量或者表达式
功能:把字符c输出到显示器中
返回值:
正常,为显示的代码值
#include<stdio.h>
int main()
{
int a;
char b;
a=69;
b='A';
putchar(a);
putchar('\n');
putchar(b);
return 0;
}
6.2 格式输出函数
格式:printf(”格式控制符“,输出表)
功能:按指定格式向显示器输出数据
输出表:要输出的数据
格式控制串:包含两种信息
格式说明: % [修饰符]格式字符,用于指定输出格式
普通字符:原样输出
#include<stdio.h>
int main()
{
int a=11;
char b=65,c[]="hello,world!";
float d=3.141;
printf("%d,%x,%o\n",a,a,a); //%o中的o为字母
printf("%c\n",b);
printf("%s\n",c);
printf("%e,%f,%g\n",d,d,d);
return 0;
}
#include<stdio.h>
int main()
{
int a=123456;
char b=65,c[]="hello-world!";
float d=3.141;
printf("%8d,%2d\n",a,a);
printf("%08d,%2d\n",a,a);
printf("%0+8d,%2d\n",a,a);
printf("%6f,%6.2f,%.2f\n",d,d,d);
printf("%6f,%0+6.2f,%.2f\n",d,d,d);
printf("%c,%3c\n",b,b);
printf("%c,%03c\n",b,b);
printf("%c,%0+3c\n",b,b); //结果与上个输出一样,因而在字符型(%c)中“+”无用
printf("%s,%16s,%8.5s,%8.11s,%.5s\n",c,c,c,c,c);
printf("%s,%016s,%8.5s,%8.11s,%.5s\n",c,c,c,c,c);//结果与上个输出一样,因而在字符串型(%s)中“+”无用
return 0;
}
6.3 字符输入函数
字符输入函数getchar
格式:getchar()
功能:从键盘一字符
返回值:正常,返回读取的代码值;出错或结束返回-1
6.4 格式输入函数
格式:scanf(“格式控制串”,地址表)
功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束
返回值:正常,返回输入数据个数
地址表:变量的地址,常用取地址运算符&
目前,scanf支持的格式字符很多,比如:
scanf函数支持的说明符可以带以下修饰符
例1:
scanf("%4d%2d%2d",&aa,&bb,&cc);
若输入19991225
则aa为1999,bb为12,cc为25
例2:
scanf("%2d %*3d%2d",&a,&b);
若输入1234567
则a为12,b为78
说明:
用"%c"格式符时,空格和转义字符作为有效字符输入
scanf("%c%c%c",&c1,&c2,&c3);
若输入a b c
则C1为a,C2为空格,C3为b
总结:输入数据的时候,遇到以下情况认为该函数结束
遇到空格,TAB或回车
遇非法输入
遇宽度结束
6.5 输入函数垃圾清理
#include<stdio.h>
int main()
{
int x;
char ch;
scanf("%d",&x);
scanf("%c",&ch);
printf("x=%d ch=%c\n",x,ch);//输入9和回车
return 0;
}
方法1:用getchar清除
#include<stdio.h>
int main()
{
int x;
char ch;
scanf("%d",&x);
getchar();
scanf("%c",&ch);
printf("x=%d ch=%c\n",x,ch);//输入9,回车,a
return 0;
}
方法2:用格式串中空格或“%*c”来 吃掉
#include<stdio.h>
int main()
{
int x;
char ch;
scanf("%d",&x);
scanf("%*c%c",&ch);
printf("x=%d ch=%c\n",x,ch);//输入9,回车,a
return 0;
}
6.6 字符串输入输出函数
6.6.1 字符串输入函数gets
格式:char * gets(char *s)
功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加 ‘\0’
说明1:输入串长度应小于字符数组维数
说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志
#include<stdio.h>
int main()
{
char x[6];
gets(x);
printf("%s\n",x);
return 0;
}
6.6.2 字符串输出函数put
格式:int puts(const char *s)
功能:向显示器输出字符串(输出完,换行)
说明:字符数组必须以‘\0’结束
#include<stdio.h>
int main()
{
char x[6];
gets(x);
puts(x);
return 0;
}