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));
}
}
拜了个拜~