Visual Studio下C语言小细节(3)——使用scanf_s循环输入字符

scanf_s函数用法介绍

1.scanf_s是scanf的进化版,比scanf更加安全,它在使用时,加了一个输入变量长度的限制符,当输入一个字符时,我们可以使用

char c;
scanf_s("%c",&c,1);

上述用法中,%c是格式限定符,后面的1是限制要赋值给字符变量c的长度,起到限定取值长度的作用,也就是说,即使我输入的是ABCD,那么最终赋值给c的只是A。

但是,也正是因为%c的关系,它除了会读取字符之外,还会读取空白,啥是空白呢,也就是换行符,制表符和空白

2.下面,对字符输入的格式限定符加另外一种写法

scanf_s(" %c",&c,1);

请注意,我在%c的前加了一个空格(space),意思是从第一个非空白字符开始读取。也就是说,第一个字符之前哪怕再多的空白,都不会赋值给c。

2.开始循环输入字符

有了前面的介绍,就可以开始循环输入字符了
1.情况一:输入:A(回车)B(回车)C(回车)。输出:ABC
如果使用不加空格的%c,那么输入到B的时候,系统就会停止输入了,因为回车算空白符,会算在c里面,因此若想完整输入ABC,完整输出ABC,就需要在%c前面加上space

#include<stdio.h>
#include<stdlib.h>

void main()
{
	int i;
	char* c;//定义数组首地址
	c = (char*)malloc(sizeof(char));//分配内存
	for (i = 0; i < 3; i++)
	{
		scanf_s(" %c",(c+i), 1);//输入字符。注意在%c前面加空格
	}
	for (i = 0; i < 3; i++)
	{
		printf("%c",*(c+i));
	}
}

2.情况二:输入:ABC,输出ABC
这个时候,加不加空格都可以

3.情况三:有的同学喜欢在输入字符前加入一些提示信息,例如:

printf("Input The Number:\n")

如果是情况一的输入,这个时候,如果不加空格,输出结果就会变成下面这样:
在这里插入图片描述
但我知道你们想要的是这样的:
在这里插入图片描述
所以代码就要在%c前加空格变成这样:

#include<stdio.h>
#include<stdlib.h>

void main()
{
	int i;
	char* c;
	c = (char*)malloc(sizeof(char));
	for (i = 0; i < 3; i++)
	{
		printf("Input The Number:\n");
		scanf_s(" %c",(c+i), 1);
	}
	for (i = 0; i < 3; i++)
	{
		printf("%c",*(c+i));
	}
}

拜了个拜~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值