входные данные для структурирования с помощью scanf на c

#c #input #struct

Вопрос:

Люди, я пытался понять, как вводить и печатать данные для структурирования с помощью терминала с помощью функции scanf…но это не работает. Я собираюсь сдавать экзамен на си, и мне трудно это понять. Мой код ниже. Когда я запускаю код, это вызывает некоторое предупреждение, например

Исключение первого шанса при 0x59473FD4 (msvcr120d.dll) в Project2.exe: 0xC0000005: Место записи с нарушением доступа 0x00749000.

 #include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

struct icx 
{
    char nameprod[20]; 
    int year; 
};

struct icx a;

int main(){
    printf("Enter the data:n");
    scanf_s("%s%d", a.nameprod, amp;a.year);
    printf("%s%d", a.nameprod, a.year);
    _getch();
    return 0;
}
 

Пожалуйста, мне нужна ваша помощь.

Комментарии:

1. Прочитайте руководство scanf_s : В отличие от scanf и wscanf, scanf_s и wscanf_s требуют, чтобы вы указывали размеры буфера для некоторых параметров. Укажите размеры для всех параметров c, C, s, S или набора строковых элементов управления []. Размер буфера в символах передается в качестве дополнительного параметра. Он сразу следует за указателем на буфер или переменную.

2. Правильный ответ на этот вопрос — «не используйте scanf». Если вы не читаете файл ctags, это, по сути, никогда не бывает правильным выбором. Прочитайте весь ввод, а затем разделите его самостоятельно.

3. Как я могу прочитать весь ввод?

4. Ребята, спасибо за ваше внимание. Я искал руководство scanf_s и использовал (unsigneg)_countof()…и это мне помогло. Хороших вам всем выходных!