为了账号安全,请及时绑定邮箱和手机立即绑定

请各位指教一下,如果用scanf语句 这个有什么问题么?

#include <stdio.h>

int main()

{

    /* 定义需要计算的日期 */

    int year;

    int month;

    int day;

    printf("请输入年月日\n");

    scanf_s("%d,%d,%d",&year,&month,&day);

    int sum;

    switch (month)

    {

    case 1:sum = 0; break;

        case 2:sum = 31; break;

        case 3:sum = 59; break;

        case 4:sum = 89; break;

        case 5:sum = 120; break;

        case 6:sum = 150; break;

        case 7:sum = 181; break;

        case 8:sum = 212; break;

        case 9:sum = 242; break;

        case 10:sum = 273; break;

        case 11:sum = 303; break;

        case 12:sum = 334; break;

        default:printf("一年中只有十二个月哦");

    }

 

    if (year % 400 ==0 || year % 4 ==0 && year%100 != 0)

    {

        if (month > 2)

        {

            sum = sum + day + 1;


        }

        else

                {  

            sum = sum + day;

                } 

        printf("%d年%d月中的第%d天\n",year,month ,sum);

    }

    return 0;

}


正在回答

2 回答


在VS中这是因为scanf()在读取数据时不检查边界,所以可能会造成内存访问越界;

---对于某些程序而言,scanf 与 scanf_s 都是一样的。主要看是否造成 内存访问越界 问题

如果不让VS进行这项检查,可以加上:

#define _CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_DEPRECATE

#pragma warning(disable:4996);


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926021    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

请各位指教一下,如果用scanf语句 这个有什么问题么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信