标准输入输出函数

1.字符输出函数putchar

putchar函数的作用是向标准输出设备,即显示器输出一个字符,一般形式为:

putchar(c);

其中c可以是一个字符型常量、变量或一个0-255的整型常量或变量,也可以是转义字符,如'\n'、'\t\'等。 

#include<stdio.h>

int main()
{
	char a, b;
	a = 'H';
	b = 'i';

	putchar(a);
	putchar(b);
	putchar('\n');
	putchar(97);
	putchar('b');

	return 0;
}

程序首先输出两个字符型变量a、b,以及一个用于回车换行的转义字符'\n'。程序在屏幕上打印“Hi”后,光标位于下一行。再输出一个字符a,因为a的ASCI码是97,最后输出一个字符型常量b。

2.字符输入函数getchar

getchar函数用于从标准输入设备,即键盘获取一个字符,一般形式为:

getchar();

c=getchar();

其中,第二个形式把输入的字符赋给变量c,变量c应该为字符型或整型。

#include<stdio.h>

int main()
{
	char c;
	c = getchar();
	putchar(c);
	putchar('\n');

	return 0;
}

注意:getchar()函数只接受1个字符,如果输入的字符超过1个,除第一个字符其他的字符会自动忽略。

3.格式化输出函数printf

printf可以输出任意类型的多个数据,一般形式为:

printf(控制字符串, 参数1, 参数2, ……, 参数n);

它的功能是,在控制字符串的控制下,将参数转换为规定的格式在标准输出设备(显示器)上进行打印显示。控制字符串中的字符包括两类:一类是普通字符,这些字符在屏幕上原样输出;另一类是格式字符,由%和格式字符组成,如%d、%f,在该位置参数以规定的格式进行输出。

printf使用的格式字符如下:

  • d:以十进制输出整型值。
  • o:以八进制输出整型值。
  • x:以十六进制输出整型值。
  • u:以无符号形式输出整型值。
  • c:输出一个字符。
  • s:输出一个字符串。
  • f:输出一个浮点数。
  • e:以科学表示法输出浮点数。
  • g:输出%f与%e中占用位数较短的一个。

对于长整型,除了可以使用%d方式输出,还可以以%ld的形式输出。现在许多计算机上长整型和整型一样,在内存都是占4个字节,它们所表示的数的范围是一样的,所以%d和%ld在这些机器上是可以通用的。但在一些较老的机器上,整型可能只占两个字节,而长整型占4个字节,输出长整型时须以%ld的格式输出。

注意:单精度浮点型(ioat)和双精度浮点型(double)都以%f的格式输出。

在%与格式字符之间还可以加上一些说明符以对输出格式作进一步的限定。

  • -:输出时左对齐,默认是右对齐,如printf(“%-10d”,i)。
  • dd:指定输出的参数所占的最小宽度,如果数据的长度小于最小宽度则以空格来填补。例如,printf(“%5d”,i),若i的值的长度大于等于5位,则原样输出;若小于5位,则左边以空格补齐;若是%-5d,则右边以空格补齐。
  • dd.dd:用于输出浮点数时,前面的dd表示整个浮点数所占的宽度,后面的dd表示小数点后面将输出几位:输出字符串时,前面的dd表示整个字符串所占的宽度,后面的dd表示输出字符串的前dd个字符。
#include<stdio.h>

int main()
{
	char c='a';
	int i = 1234;
	float f = 12.123456;
	double d = 12.5;

	printf("%d %o %x\n", i, i, i);
	printf("%c %d\n", c, c);
	printf("%s\n", "hello");
	printf("%f %e %g\n", f, f, f);

	printf("123456789012345678901234567890\n");
	printf("%5c%5d%10.5f%10.5f\n",c,i,f,d);
	printf("123456789012345678901234567890\n");
	printf("%-5c%-5d%-10.5f%-10.5f\n", c, i, f,d);

	return 0;
}

第1行以十进制、八进制和十六进制3种方式打印出整型变量i的值。
第2行以两种方式输出字符型变量a.
第3行输出一个字符串。
第4行以3种方式输出浮点型变量f。%f,即以一般浮点形式输出:以%方式输出时,小数部分最多只能输出6位,最后一位6是四舍五入得到的:以%g方式输出时,小数部分只能保留4位。同样地,最后一位5也是四舍五入得到的。
第5行和第7行输出30个字符,主要是为了方便地观察在带说明符(如dd.dd)时,数据的输出结果。
第6行以dd.dd的格式输出各种数据类型。如字符型变量c其值‘a’只占一位,在以%5c方式输出时,左边4位补以空格。
第8行以-dd.dd的格式输出各种数据类型。如整型变量I,其值1234占四位,在以%-5d格式输出时,先输出1234,第5位以空格补充。

4.格式化输入函数scanf

格式化输入函数其一般格式为:

scanf(控制字符串, 参数1, 参数2, ……, 参数n);

它接受来自键盘的输入,自动把输入的数据转换为规定的格式并存储到由参数指定的变量中。参数必须是以变量地址的形式给出。
与printf一样,scanf可以使用的格式字符如下所示:

  • d:期待输入一个十进制整数。
  • o:期待输入一个八进制整数。
  • x:期待输入一个十六进制整数。
  • u:期待输入一个无符号整数。
  • c:期待输入一个字符。
  • s:期待输入一个字符串。
  • f:期待输入一个浮点数。
  • e:期待输入一个以科学表示法的表示的浮点数。

与printf类似,可以以%ld的方式输入一个长整型。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	char c;
	int i ;
	float f ;

	scanf("%d %c %f", &i, &c, &f);
	printf("%d %c %f", i, c,f);
	scanf("%d,%c,%f", &i, &c, &f);
	printf("%d %c %f", i, c, f);

	return 0;
}

(1)程序运行,等待用户输入,这里输入123、a和12.5,之间以空格间隔,回车后程序在屏幕上打印出3个变量的值。系统怎样知道123是赋给变量i而字符a是赋给变量c的呢?当遇到空格键、制表键<Tab>或<Enter>键时,系统认为是一个变量输入的结束。注意,在输出时,printf函数中%d、%c、%f之间有空格,空格作为普通字符在屏幕上会原样输出,下一行显示打印结果。
(2)在第2次要求输入时,我们已经在程序里规定了用逗号分割,此时必须输入数据时以逗号隔开。下一行打印出各个变量的值。
(3)那么如果有错误的输入,系统会有什么反映呢?在设计程序时,必须考虑到用户可能不会每次都按照软件的要求正确地输入数据,所以在设计软件时必须考虑对错误输入的处理,否则一旦用户有错误的输入,程序就崩溃了,这样的软件显然是缺乏竞争力的。如果我们在程序第一要求输入时,输入a123a12.5,然后回车,输入的数据之间没有空格,也没有按<Tab>或<Enter>键,会有什么结果呢?结果是系统输出一些奇怪的数。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值