C语言-格式化输入函数scanf()

本文详细介绍了scanf()和printf()函数在程序中的使用,包括格式控制字符串、不同类型数据的输入、输入多个参数的注意事项以及与printf()的配合。重点讲解了如何正确处理格式控制和普通字符,以及常见错误和最佳实践。
摘要由CSDN通过智能技术生成

  scanf()函数与printf()函数都是系统提供的库函数,只是printf()用于输出,而scanf()是用于输入的。若要使用scanf()函数,同样需要在程序开头包含头文件#include <stdio.h>。该函数是用于从键盘输入数据,其用法与printf()的用法类似:

	scanf(格式控制字符串,输入参数1...,输入参数n);

  格式控制字符串表示输入的格式,输入参数是变量的地址,格式是在变量名前加&&表示取地址,如&a。例如:scanf("%d", &a);。输入完需要输入的数据后需按回车键,然后scanf()函数执行完毕。
  格式控制字符串同printf()一样,包含两种信息:格式控制说明和普通字符。

1. 格式控制说明:


  按指定的格式读入数据,它包含以 %开头的格式控制字符,不同类型的数据采用不同的格式控制字符,同printf()基本一样。
  scanf()函数的输入参数必须和格式控制字符串中的格式控制说明相对应,并且它们的类型、个数和位置要一一对应。 若不对应,可能会出现逻辑错误,但此时编译器并不会报错。
注:与printf()函数不同的是,scanf()函数double型数据使用格式控制说明 %lf,其中的l是long的首字母;float型数据使用的是 %f。而printf()函数double和float均使用格式控制说明 %f

2. 普通字符:


  在输入数据时,需要原样输入的字符。例如

	scanf("x=%ld",&x);

那么在程序运行时就要输入:

	x=5.6

  需要注意的是,这里出现的普通字符x=必须也要原样输入,否则会出现错误。
  一般在编写程序的过程中,scanf()函数的格式控制字符串中尽量少出现普通字符,一定要注意不能将提示信息放入其中,因为放在scanf()函数内的字符不会输出到屏幕上,是需要用户输入进去的,一般采用和printf()函数搭配使用。例如:

	printf("Enter fahr:\n");	/*输入提示信息*/
	scanf("%d", &fahr);

其运行效果如下:在提示处输入参数后按回车即可。
在这里插入图片描述

3. 输入多个数据:


scanf()可以一次输入多个数据参数,但是它们的类型、个数和位置要一一对应,scanf()格式控制符之间一般不需要空格。
例如下面的一段代码

	int day;						
	double factor, initial, result; 
	scanf("%lf%lf%d", &initial, &factor, &day); /*正确的使用*/
	scanf("%lf%d%lf", &initial, &factor, &day); /*错误,因为%d对应的位置为factor,而factor是double类型的*/
	scanf("%lf%d%lf", &initial, &day, &factor); /*正确。类型顺序改变,相应的后面参数的顺序也要改变。*/
	scanf("%lf %d %lf", &initial, &day, &factor); /*格式控制符之间添加了空格,运行效果是一样的*/

注: 输入字符型数据
需要注意的是scanf()输入多个字符型数据时,若中间有空格,也会被当成字符型数据。例如下面代码输入5 *

	int n;
	char ch;
	scanf("%d%c", &n, &ch); //ch的值会成为空格
	scanf("%d %c", &n, &ch); //此时才会将ch的值为*,但是输入的是多个空格的话ch的值仍为空格,需注意要求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值