C语言学习笔记之(格式化输入输出)

一、常见的格式字符

格式字符功能说明
%d以十进制形式输出带符号整数(正数不输出符号)
%o以八进制形式输出无符号整数(不输出前缀0)
%x,%X以十六进制形式输出无符号整数(不输出前缀0x)。x表示以小写字母输出十六进制数的a~f,X表示以大写字母输出十六进制数的A~F
%u以十进制形式输出无符号整数
%f以小数形式输出单、双精度实数,隐含输出6位小数
%e,%E以指数形式输出单、双精度实数。用e时,指数以“e”表示(如2.3e+003),用E时指数以“E”表示(如2.3E+003)
%g,%G以%f或%e中较短的输出宽度输出单、双精度实数,不输出无意义的0。用G时,若以指数形式输出,指数用大写表示
%c输出单个字符
%s输出字符串

二、使用printf输出不同格式

#include <stdio.h>
int main()
{
	int a=15;						/*定义整型变量a并赋值*/
	float b=12.3456;					/*定义单精度型变量b并赋值*/
	double c=12345678.1234567;			/*定义双精度型变量c并赋值*/
	char d='p';					/*定义字符型变量d并赋值*/
	printf("十进制a=%d,八进制a=%o,十六进制a=%x\n",a,a,a);/*输出变量a的十进制、八进制和十六进制形式*/
	printf("b=%f\n",b);					/*输出变量b*/
	printf("c=%f,c=%e\n",c,c);				/*输出变量c的小数形式和指数形式*/
	printf("d=%c\n",d);				/*输出字符变量d*/
	printf("%s\n","I love C");				/*输出字符串*/
	return 0;						/*函数返回值0*/
}

//输出结果如下
十进制a=15,八进制a=17,十六进制a=f
b=12.345600
c=12345678.1234567,c=1.234568e+007
d=p
I love C

程序中定义的整型变量a,输出时可以用不同的格式字符输出a的十进制数(%d)、八进制数(%o)和十六进制数(%x)。输出单精度和双精度小数时都可以用“%f”,若想以指数形式输出单精度型和双精度型数,可以用“%e”。此外,可以用“%c”输出单个字符,用“%s”输出字符串。需要注意的是,输出字符串时,字符串需要用双撇号括起来。

1.再printf函数中使用附加符号

#include <stdio.h>
int main()
{
	int a=15;					/*定义整型变量a并赋值*/
	double b=12345678.1234567;		/*定义双精度型变量b并赋值*/	
	printf("a=%5d,a=%-5d,a=%05d\n",a,a,a);	/*使用m控制输出位数,用-左对齐,
						  空位补0*/
	printf("b=%f,b=%lf,b=%8.3f\n",b,b,b);	/*输出b,用m.n控制输出的长度和
						  小数点位数*/
	printf("%15s\n","I love C");			/*使用m控制输出字符串长度*/
	printf("%-15.5s\n","I love C");		/*使用-m.n进行左对齐、限制字符串
						  长度和字符位数*/
	return 0;					/*函数返回值0*/
}

//输出结果如下
a=    15,a=15    ,a=00015
b=12345678.123457,b=12345678.123457,b=12345678.123
        I love C
I lov          

输出变量a时,“%5d”表示输出宽度为5,而a值为15,只有两位,故补三个空格;“%-5d”表示输出宽度为5并且左对齐,因此后补三个空格;“%05d”表示输出宽度为5并用“0”来补空位。输出变量b时,“%f”和“%lf”格式的输出相同,说明符号“l”对“f”类型无影响。“%8.3f”表示输出宽度为8,精度为3,由于实际长度超过8位,故应按实际位数输出,小数位数超过3位部分被截去。输出字符串时,“%15s”表示输出字符串宽度为15,如果字符串本身长度不足15,则用空格左补齐,可以看到“I love C”前存在7个空格。“%-15.5s”表示输出宽度虽为15,但这里指定了精度“.5”,也就是说指定了输出字符的个数为5,并且用“-”指定了左对齐,所以输出5个字符“I lov”,后面还有10个空格。

三、scanf格式输入

格式输入函数scanf的一般格式为:
scanf("格式控制",输入项地址列表);
例如:
scanf("a=%d,b=%f",&a,&b);

1.使用scanf应该注意输入格式与代码保持一致

利用scanf函数从键盘读入数据时,需注意:
(1)多个数据间可用空格键、回车键或【Tab】键进行分隔,最后以回车键结束输入。例如:
scanf("%d%d",&a,&b);
如想令a为12,b为34,正确的输入方式为:
12 34↙
或:
12↙
34↙
或:
12<TAB>
34↙
以上三种方式皆可。
scanf("a=%d,b=%f",&a,&b);
如想令a为3,b为4,则必须完整输入:
a=3,b=4↙
其中的“a=”、“b=”及逗号都必须原样输入,否则会出错。
 

四、字符输入输出

1.字符输出putchar

字符输出函数putchar的功能是向输出设备输出一个字符,其一般格式为:
putchar(c);
c为欲输出的字符常量或变量,亦可为整型常量或变量(ASCII码)。

参考代码

#include<stdio.h>
int main()
{
	char a='A';			/*定义字符型变量a并赋初值'A'*/
	int b=66;				/*定义整型变量b并赋初值66*/
	putchar(a);			/*输出变量a的值*/
	putchar(b);			/*输出变量b的值*/
	putchar('C');			/*输出字符'C'*/
	putchar('\n');			/*输出换行符*/
	return 0;				/*函数返回值0*/
}
//输出结果为
ABC

2.字符输入getchar

字符输入函数getchar的功能是从输入设备上读入一个字符,其一般格式为:
getchar();
该函数的返回值为所读入的字符,所以一般与赋值语句联合使用,将读取的字符赋给变量,例如:
char c;			/*定义字符变量c*/
c=getchar();		/*从键盘读入一个字符并赋值给变量c*/

参考代码

#include<stdio.h>
int main()
{
	char a,b,c;			/*定义字符型变量a,b,c*/
	a=getchar();			/*输入一个字符给变量a*/
	b=getchar();			/*输入一个字符给变量b*/
	c=getchar();			/*输入一个字符给变量c*/
	putchar(a);			/*输出变量a的值*/
	putchar(b);			/*输出变量b的值*/
	putchar(c);			/*输出变量c的值*/
	putchar('\n');			/*输出换行符*/
	return 0;				/*函数返回值0*/
}

//输出结果为
输入A
B
C
输出ABC