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

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

结果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值