Проблема со структурами и циклами в программировании - PullRequest
0 голосов
/ 28 сентября 2019

Я хотел создать программу на языке c, которая будет читать имя студента, номер броска, оценки по 3 предметам.когда я запускаю программу, она не показывает ошибок, но проблема заключается в том, что всякий раз, когда я пытаюсь ввести информацию, требуется только 2 ввода.Кто-нибудь, пожалуйста, проверьте программу и укажите ошибку в моей программе.

#include <stdio.h>
struct student 
{
  char sname[20];
  int srollno;
  int smarks[3];
};

int main ()
{
  struct student e[3];
  int i,j;
  for (i=0;i<=2;i++)
  {
    scanf ("%s",e[i].sname);
    scanf ("%d",e[i].srollno);
    for (j=0;j<=2;j++)
    {
        scanf ("%d",e[i].smarks[j]);
    }
  }
}

она принимает только два входа.

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Я немного изменил ваш код.Это рабочая версия кода.

Код

#include <stdio.h>
struct student 
{
  char sname[20];
  int srollno;
  int smarks[3];
};

int main ()
{
  struct student e[3];
  int i,j;
  for (i=0;i<=2;i++)
  {

    printf("Name: ");
    scanf("%s", e[i].sname);
    printf("roolNumber: ");   
    scanf("%d", &e[i].srollno);


    for (j=0;j<=2;j++)
    {

        printf("Mark %d: ",j);
        scanf("%d", &e[i].smarks[j]);
    }
  }

  printf("\n\nprinting \n\n");
  for (i=0;i<=2;i++)
  {

    printf("Name: %s\n", e[i].sname);
    printf("roolNumber: %d\n", e[i].srollno);

    for (j=0;j<=2;j++)
    {
        printf("Mark: %d\n", e[i].smarks[j]);

    }
    printf("\n");
  }
}

Компиляция и запуск

gcc -Wall source.c -o source

. / Source

Я предлагаю использовать printf() перед попыткой scanf(),это делает интерфейс пользователя лучше.

scanf() массив символов не нуждается в операторе & (адрес). смотри это

char str[10];
scanf("%s", str);
printf("%s\n", str);

Работает точно так же, как

char str[10];
scanf("%s", &str[0]);
printf("%s\n", str);

Поскольку str - указатель на свой первый элемент str[0].Как указано в ссылке, мы можем написать printf("%d\n", str==&str[0]);, и всегда результатом будет то, что str и & str [0] идентичны.

1 голос
/ 28 сентября 2019

у вас есть проблемы с вашим scanf.Попробуйте это:

scanf("%s",&e[i].sname);
...