功能已被否决

问题描述 投票:0回答:1

我开始学习C语言,和短暂的休息之后,我开始温习一遍,我在坚持与新的更新。此代码不工作。我不明白现在怎么办。如果我从scanf函数改为scanf_s它不反正工作。我也试图改变类型的声明。是否有人在这里谁可以解释我怎么能更改此代码,现在用什么,scanf或scanf_s,以及在什么场合使用它们。提前致谢。

#include <stdio.h>
#define N 256

typedef struct
{
   char name[N];
    char surname[N];
    char street[N];
    char city[N];
   char district[3];
    int n_house;
    int day, month, year;

} person;


main()
{

    person s;

    printf("ask name\n");
   scanf("%s", s.name);

   printf("ask sur\n");
   scanf("%s", s.surname);

   printf("ask wh h lives\n");
   scanf("%s %s %s %d", s.street, s.city,      s.district, &s.n_house);

    printf("ask bd\n");
    scanf("%d/%d/%d", &s.day, &s.month,     &s.year);

    printf("personal data of the person :     \n");
   printf("%s %s\n Nato il %d %d %d \n    Vive in %s %s %s %d", s.name,    s.surname, s.day, s.month, s.year,    s.street, s.city, s.district, s.n_house);

}

该错误是C4996 scanf函数。此函数或变量可能是不安全的。考虑使用scanf_s代替。要禁用折旧,使用_CTR_SECURE_NO_WARNINGS。

c scanf updates
1个回答
0
投票

我编译你的程序有一些小的修改:

#include <stdio.h>
#define N 256

typedef struct
{
    char name[N];
    char surname[N];
    char street[N];
    char city[N];
    char district[3];
    int n_house;
    int day, month, year;

} person;


void main(void)
{

    person s;

    printf("ask name\n");
    scanf("%s", s.name);

    printf("ask sur\n");
    scanf("%s", s.surname);

    printf("ask wh h lives\n");
    scanf("%s %s %s %d", s.street, s.city, s.district, &s.n_house);

    printf("ask bd\n");
    scanf("%d/%d/%d", &s.day, &s.month, &s.year);

    printf("personal data of the person :     \n");
    printf("%s %s\n Nato il %d %d %d\nVive in %s %s %s %d\n",
           s.name, s.surname,
           s.day, s.month, s.year,
           s.street, s.city, s.district, s.n_house);

    return;
}

并与输入的工作原理:

ask name
george
ask sur
mac
ask wh h lives
barcelona sskk ksl 123
ask bd
12/13/1111
personal data of the person :
george mac
Nato il 12 13 1111
Vive in barcelona sskk ksl 123

这是你想的那种投入?

© www.soinside.com 2019 - 2024. All rights reserved.