Некорректная запись в массив структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вообщем написал программу но она работает не совсем корректно на этапе заполнения массива структур после 1ого раза запись глючит и выдает вместо 1 пункта для заполнения несколько помогите решить проблему. Код программы:
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct razr
    {
          char nazvanie[60];
          int prioritet;
          int zatraty;
          int przav;
          int chelovek;
          };
          int main()
          {
            int i,j,k;
            struct razr raz[3];
            for(i=0;i<3;i++)
            {
                puts("Nazvanie=");gets(raz[i].nazvanie);
                puts("Prioritet=");scanf("%d",&raz[i].prioritet);
                puts("Zatraty=");scanf("%d",&raz[i].zatraty);
                puts("Procent zavershenosti=");scanf("%d",&raz[i].przav);
                puts("Chelovek zan9to=");scanf("%d",&raz[i].chelovek);
                puts("\n");

            }
            for(i=0;i<3;i++)
            {
                puts("Nazvanie");puts(raz[i].nazvanie);
                printf("Prioritet=%d",raz[i].prioritet);
                printf("Zatraty=%d",raz[i].zatraty);
                printf("Procent zavershenosti%d",raz[i].przav);
                printf("Chelovek zan9to%d",raz[i].chelovek);
                puts("\n");
            }
            getch();
          }
Переделал через указатели та же проблема
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct razr
    {
          char nazvanie[60];
          int prioritet;
          int zatraty;
          int przav;
          int chelovek;
          };
          int main()
          {
          
            struct razr *raz1,*pointer;
            raz1=(struct razr*)malloc(3*sizeof(struct razr));
            for(pointer=raz1;pointer<raz1+3;pointer++)
            {
                puts("Nazvanie=");gets(raz1->nazvanie);
                puts("Prioritet=");scanf("%d",&raz1->prioritet);
                puts("Zatraty=");scanf("%d",&raz1->zatraty);
                puts("Procent zavershenosti=");scanf("%d",&raz1->przav);
                puts("Chelovek zan9to=");scanf("%d",&raz1->chelovek);
                puts("\n");
            }
            for(pointer=raz1;pointer<raz1+3;pointer++)
            {
                puts("Nazvanie");puts(raz1->nazvanie);
                printf("Prioritet=%d",raz1->prioritet);
                printf("Zatraty=%d",raz1->zatraty);
                printf("Procent zavershenosti%d",raz1->przav);
                printf("Chelovek zan9to%d",raz1->chelovek);
                puts("\n");
            }
            getch();
          }

Решение задачи: «Некорректная запись в массив структур»

textual
Листинг программы
 puts("Chelovek zan9to=");scanf("%d",&raz1->chelovek);getchar();

Объяснение кода листинга программы

  1. Программа запрашивает у пользователя ввести число с помощью функции scanf.
  2. Введенное число сохраняется в переменной raz1->chelovek.
  3. Функция getchar используется для чтения символа новой строки, оставшегося во входном потоке после ввода числа.
  4. Значение переменной raz1->chelovek не проверяется на корректность.
  5. Программа выводит сообщение Chelovek zan9to= и ожидает ввода числа от пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы