scanf()函数与scanf_s()函数的区别

来源:互联网 发布:mac alias 配置 编辑:程序博客网 时间:2024/03/29 14:33

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;}

结果
这里写图片描述

原创粉丝点击