scanf()函数与scanf_s()函数的区别
scanf()函数是C语言中的一个输入函数,与printf()函数一样都被声明在stdio.h头文件中,它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf_s() 是针对“ scanf()在读取字符串时不检查边界,可能会造成内存泄露”这个问题设计的。
scanf_s()用于读取字符串时,必须提供一个数字以表明最多读取多少位字符,以防止溢出。
原型
int scanf(const char * restrict format,...);
int scanf_s(const char * restrict format,...,Number);
参数
format 格式控制符
格式字符 说明
%d 从键盘输入十进制整数
%o 从键盘输入八进制整数
%x 从键盘输入十六进制整数
%c 从键盘输入一个字符
%s 从键盘输入一个字符串
%f 从键盘输入一个实数
%e 与%f的作用相同
L 输入"长"数据
H 输入"短"数据
M 指定输入数据所占宽度
* 空读一个数据
Number 长度
调用格式
scanf("<格式化字符串>",<地址表>);
scanf_s("<格式化字符串>",<地址表>,<数量>);
实例
int CountVowel(char str[])
{
int count = 0;
int i;
for (i = 0; str[i] != '\0'; i++)
{
switch (str[i])
{
case 'a':count++; break;
case 'e':count++; break;
case 'i':count++; break;
case 'o':count++; break;
case 'u':count++; break;
case 'A':count++; break;
case 'E':count++; break;
case 'I':count++; break;
case 'O':count++; break;
case 'U':count++; break;
}
}
return count;
}
int main()
{
char buf[128];
printf("Please input a string:");
scanf_s("%s",&buf,128);
printf("%d vowels appear in your string.\n", CountVowel(buf));
system("pause");
return 0;
}
结果