Сохраняйте ошибку сегментации при использовании scanf для массива внутри структуры

#c

Вопрос:

Я новичок в C и пытаюсь изучать структуры данных, выполняя упражнения. Это код, который я написал. Я не понимаю, почему он даже не входит в цикл for.

 /*  Define a structure to store the name, an array
marks[] which stores the marks of three different
subjects, and a character grade. Write a program
to display the details of the student whose name
is entered by the user.*/ 

#include <stdio.h>

int main()
{
    struct stud_info
    {
       char name[20];
       int marks [2][5];
       int char_grade;
    };
    
    struct stud_info array[20];
    struct stud_info stud1;
    int i,j;
    printf("Enter name of student:n");
    scanf("%s",stud1.name);
    printf("Enter student char_grade:n");
    scanf("%d",stud1.char_grade);
    for( i=0;i<=2;i  )
        for( j=0;j<=5;j  )
        {
            printf("Enter grade for [%d]st subject:n",i);
            scanf("%d",amp;stud1.marks[i][j]);
        }


    return 0;
}

 

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

1. Переполнение границ массива: пожалуйста, измените на for( i=0;i<2;i ) for( j=0;j<5;j ) длину массива n , на которую можно проиндексировать n-1 .

2. .. но перед тем, как петли scanf("%d",stud1.char_grade); должны быть scanf("%d",amp;stud1.char_grade); Спецификатору %d нужен адрес его целевого объекта в scanf() , но не в printf() .

3. @WeatherVane Спасибо вам за время, которое вы потратили на ответ. Я изменю это, и я верю, что теперь это должно сработать!

4. Пожалуйста, никогда не говори так, это звучит так, как будто я был недостаточно быстр. Достаточно будет просто «спасибо за потраченное время».