VSscanf中,我明明添加了#define _CRT_SECURE_NO_WARNINGS,为什么还是报错?

VSscanf中,我明明添加了#define _CRT_SECURE_NO_WARNINGS,为什么还是报错?

img


完整代码:
test.h:

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct guan
{
    char* id;
    char* name;
    int* sl;
    double* price;
}guan;
void lr(guan guan1[], int* num); //录入设备 
void ck(guan guan[], int* num);
void guanliyuan();

test.cpp:

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

#include"test.h"
/*struct guan
{
 char *id;
 char *name;
 int state;
 int sl;
 double price;
}sheb;*/
void jinru()
{
    printf("         欢迎使用设备借还系统        \n");
    printf("(1)管理员系统\n");
    printf("(2)用户登录系统\n");
    printf("(3)用户注册系统\n");
    printf("(4)退出\n");
    printf("请输入:");
}

int main()
{
    int a;
    struct guan guan[1000];
    jinru();
    scanf("%d", &a);
    switch (a)
    {
    case 1:
        guanliyuan();
        break;
    case 2:
        printf("用户登录系统\n");
        break;
    case 3:
        printf("用户注册系统\n");
        break;
    case 4:
        printf("退出\n");
        break;
    default:
        printf("error\n");
        break;
    }
}

test2.cpp:

#include"test.h"
void lr(guan guan1[], int* num)
{
    while (1)
    {
        printf("请输入设备编号:\n");
        scanf("%c\n", guan1[*num].id);
        printf("请输入设备名称:\n");
        scanf("%c\n", guan1[*num].name);
        printf("请输入设备数量:\n");
        scanf("%d\n", guan1[*num].sl);
        printf("请输入设备价格:\n");
        scanf("%lf\n", guan1[*num].price);
        *num++;
        char j;
        printf("是否继续录入(y/n):\n");
        scanf("%c", &j);
        if (j == 'y')
        {
            continue;
        }
        else
        {
            break;
        }
    }

}

void ck(guan guan[], int* num)
{
    while (1)
    {
        printf("设备名称是:%c\n", guan[(*num)].name);
        printf("设备数量是:%d\n", guan[*num].sl);
        printf("设备价格是:%lf\n", guan[*num].price);
        char c;
        printf("是否继续查看设备(y/n):\n");
        scanf(" %c\n", &c);
        if (c == 'y')
        {
            continue;
        }
        else
        {
            break;
        }
    }
}

void guanliyuan()
{
    int b;
    guan guan1[1000];
    printf("         管理员系统        \n");
    printf("(1)录入设备\n");
    printf("(2)查看已存设备\n");
    printf("(3)修改已有设备信息\n");
    printf("(4)登记破损设备\n");
    printf("(5)注销现存设备\n");
    printf("(6)返回\n");
    printf("请输入:%d\n");
    scanf("%d", &b);
    int num = 0;
    switch (b)
    {
    case 1:
        lr(guan1, &num);
    case 2:
        ck(guan1, &num);
    case 3:
    case 4:
    case 5:
    case 6:
    default:
        printf("error\n");
        break;
    }
}

放在开头第一行看看
再不行,在项目属性里禁止C4996报错

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^