scanf函数和printf函数的小总结

总显示正负号:
printf函数默认情况下不对正数显示+号,只对负数显示-号,如果想正数也输出+号,可以在占位符的%后面加一个+。

显示宽度

#include <stdio.h>
int main()
{
	printf("%5d\n",1234);
	
	return 0;
}
 1234

可以看到输出结果是 1234,%5d的意思就是打印的最低是5位宽度位数不够就用空格补充,对齐方式默认是右对齐。

如果数大于预定的宽度呢?

#include <stdio.h>
int main()
{
	printf("%5d\n",123456);

	return 0;
}
123456

可以看到程序打印的结果并不是5位的宽度,因为超过5的宽度就会正常输出。

浮点数

#include <stdio.h>
int main()
{
	float a = 0.0;
	printf("%9.2f",487.154);

	return 0;
}

这个程序打印的结果是什么呢?

   487.15

为什么打印的会是这个结果呢?
前面说过所以这里的12表示浮点数的最低宽度, 后面的***.2***(注意这里有个小数点),表示的是小数点后面的浮点数是多少位,后面的浮点数直接舍掉,前面说过宽度不够用空格代替所以这里的结果是 487.15。
**
printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个,printf函数第一个参数是字符串“ ”这个算空字符串,所以是n+1个。

下面是占位符:

**
在这里插入图片描述


scanf函数


#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);		//数组可以不用加&号
	printf("%d\n",123456);

	return 0;
}

scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。

#include <stdio.h>
int main()
{

	int x;
	float y;
	//用户输入"-13.45e12#0"
	scanf("%d"&x);
	scanf("%f"&y);
	
	return 0;
}

上面示例中,scanf()读取用户输入时,%d占位符会忽略起首的空格,从-处开始获取数据,读
取到-13停下来,因为后面的 .(这里有小数点)不属于整数的有效字符。这就是说,占位符%会读到-13.
第二次调用scanf()时,就会从上一次停止解读的地方,继续往下读取。这一次读取的首字符
是,由于对应的占位符是%f,会读取到45e12,这是采用科学计数法的浮点数格式。后面的
#不属于浮点数的有效字符,所以会停在这里。

%c不会忽略空白字符。其他的自动忽略起首的空白字符。%不忽略空白字符,总是返
回当前第一个字符,无论该字符是否为空格。
如果要强制跳过字符前的空白字符,可以写成 scanf(" %c",&x),即%前加上一个空格,表
示跳过零个或多个空白字符。
下面要特别说一下占位符%s,它其实不能简单地等同于字符串。它的规则是,从当前第一个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。
因为%s不会包含空百字符,所以无法用来读取多个单词,除非多个%s一起使用。这也意味着,"
scanf()不适合读取可能包含空格的字符串,比如书名或歌曲名。另外,scanf()遇到%s占位
符,会在字符串变量末尾存储一个空字符1日。
scanf()将字符串读入字符数组时,不会检测字符串是否超过了数组长度。所以,储存字符串时,
很可能会超过数组的边界,导致预想不到的结果。为了防止这种情况,使用%s占位符时,应该指定读入字符串的最长长度,即写成%[m]s,其中的「m]是一个整数,表示读取字符串的最大长度,后面的字符将被丢弃。
最后可以用%c表示忽略字符。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值