C语言学习7.27代码分析

一:

#include <stdio.h>
int main()
{
	char arr[20] = {0};
	
	scanf("%6s", arr);
	printf("%s", arr);
	return 0;
} 


分析:scanf函数不会忽略空格。如输入abc__def 则读取__时停止输出为abc
[20]指的是最大读取长度多的话就会系统就会崩溃
%6s指的是读取长度为6超出部分不读

二:

#include <stdio.h>

int main()
{
	printf("%5d\n", 123);
	printf("%f\n", 1.23);
	printf("%+5d\n", 123);
	printf("%-5d\n", 123);
	printf("%.3f\n",12.6);
	printf("%6.3f",5.9);
	printf("%*.*f\n",9,6,3.6);
	printf("%s","what doesn`t kill you makes you stronger");
	return 0;

输出结果为(注:x指输出空格)
xx123
1.230000
x +123
123
12.600
x5.900
3.600000
what doesn`t kill you makes you stronger
分析:%5d指的是输出五位数字由于123不足五位123前输出两个空格补位,123自动右对齐。
%-5d实现左对齐
%.3f实现小数点后保留三位
%6.3f指的是读取6位,小数点后保留3位
%s为输出字符串

三:

int score = 0;
	printf("请输入成绩:");
	scanf("%d", &score);
	printf("您的成绩是:%d", score);

易错点:&容易漏

四:

#include <stdio.h>
int main()
{
 int year = 0;
 int month = 0;
 int day = 0;
 scanf("%d-%d-%d", &year, &month, &day);
 printf("%d %d %d", year,month,day);
 return 0; }

输入:2023-7-23
输出:2023 7 23

上⾯⽰例中,如果⽤⼾输⼊ 2020-01-01 ,就会正确解读出年、⽉、⽇。问题是⽤⼾可能输⼊其他 格式,⽐如 2020/01/01 ,这种情况下, scanf() 解析数据就会失败
为了避免这种情况, scanf() 提供了⼀个赋值忽略符(assignment suppression character) 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。
即:

#include <stdio.h>
int main()
{
	int year = 0;
	int month = 0;
	int day = 0;
	scanf("%d%*c%d%*c%d", &year, &month, &day);
	printf("%d %d %d", year,month,day);
	return 0;
}

输入:2023-7-23或2023/7/23
输出:2023 7 23
即加上%*c后自动忽略用户所输入的符号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值