C语言函数库中有一批标准输入输出函数,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。其中有putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)、puts(输出字符串)、gets(输入字符串)。
#include
指令把stdio.h
头文件包含到程序中,例#include
。%
是格式字符,指定输入格式&
开头格式 | 字符意义 |
---|---|
d | 输入十进制整数 |
o | 输入八进制整数 |
x | 输入十六进制整数 |
u | 输入无符号十进制整数 |
f或e | 输入浮点型数字 |
c | 输入单个字符 |
s | 输入字符串 |
scanf需要注意:
事例:
#include
int main(void)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如:
1 2 3
或者
1
2
3
#include
int main(void)
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
输入时用“,”作间隔符,输入为4,5,6
再比如
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
输入应为:a=3,b=4,c=5
scanf("%3d",&a);
输入456789只把456赋值变量a,其余部分被截去
scanf("%4d%4d",&a,&b);
输入456789将把456赋值a,而把789赋值b
scanf("%c%c%c",&a,&b,&c);
在输入字符数据时,若格式控制中无非格式字符,则认为所有输入的字符均为有效字符。
输入d\e\f,则把‘d’赋值给a,‘\’赋值给b,‘e’赋值给c。只有当输入为def,才能将‘d’赋值给a.'e’赋值给b,‘f’赋值给c。
如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
scanf ("%c %c %c",&a,&b,&c);
因为在格式控制中加入了空格作为间隔,所以在输入各数据之间需加空格。
scanf ("%c,%c,%c",&a,&b,&c);
因为在格式控制中加入了‘,’作为间隔,所以在输入各数据之间需加‘,’。
#include
int main(void)
{
char a,b,c;
printf("input character a,b,c\n");
scanf("%c %c %c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
return 0;
}
输入三个小写字母,输出其ASCII吗和对应的大写字母
scanf("%s", &str); //str前面不应加&
#include
int main()
{
char c[]="China";
printf("%s\n",c);
return 0;
}
char c[6];
scanf("%s",c);
从键盘输入:China
系统会自动在China后面加一个‘\0’结束符
char str1[5],str2[5],str3[5];
scanf("%s%s%s",str1,str2,str3);
如果利用一个scanf函数输入多个字符串,则应在输入时以空格分隔。
从键盘输入:How are you?
由于有空格字符分隔,作为三个字符串输入。
char str[13];
scanf("%s",str);
从键盘输入:How are you?
由于系统把空格字符作为输入的字符串之间的分隔符,因此只能将空格前的字符“How”送到str中
用于从标准输入输出控制台读取字符
【参数】该函数没有参数
【返回值】函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。(循环语句中)如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。也就是说,后续的getchat()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。
#include
int main( ){
int ch;
while( (ch=getchar()) != '\n' ) //从控制台流中读取字符,直到按回车键结束
printf ("%c", ch; //输出读取内容
}
输入abcd,输出abcd
#include
int main( ){
int ch;
while( (ch=getchar()) != '\n' ) //从控制台流中读取字符,直到按回车键结束
printf ("%d", ch; //输出读取内容
}
输入abcd,输出979899100
注意将ch=getchar()用括号括起来,这里的‘!=’的优先级高于‘=’,否则会导致ch赋值的错误
用于将给定的字符输出控制台
【参数】ch为要输出的字符。
【返回值】输出成功,返回该字符的ASCII码值,否则返回EOF。
purchar(‘字符’)或者putchar(字符变量)
#include
int main()
{
char ch;
ch='A';
putchar(ch);
putchar('A');
return 0;
}
输出结果:AA
【参数】char *类型, str 可以是一个字符指针变量名(没理解),也可以是一个字符数组名。
1、gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。
2、从终端输入一个字符串到字符数组,并且得到一个函数值,该函数是字符数组的起始地址
gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL(‘\0’)作为字符串结束。(使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。) 所读取的字符串暂存在给定的参数string中。
#include
int main()
{
char str1[20]={0}; //字符数组初始化为\0
gets(str1);
printf("%s",str1);
puts(str1);
return 0;
}
从键盘输入:Computer
输出:ComputerComputer
将输入的字符串″Computer″送给字符数组str(请注意,送给数组的共有9个字符,而不是8个字符),返回的函数值是字符数组str的第一个元素的地址。
作用:将一个字符串(以‘\0’结束的字符序列)输出到终端
用puts函数输出的字符串中可以包含转义字符。
在用puts输出时将字符串结束标志′\0′转换成′\n′,即输出完字符串后换行。
#include
int main(void)
{
char str[]={"China\nBeijing"};
puts(str);
return 0;
}
输出结果:China
Beijing
参考文献