Некорректная запись в массив структур - 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();
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввести число с помощью функции scanf.
- Введенное число сохраняется в переменной raz1->chelovek.
- Функция getchar используется для чтения символа новой строки, оставшегося во входном потоке после ввода числа.
- Значение переменной raz1->chelovek не проверяется на корректность.
- Программа выводит сообщение
Chelovek zan9to=и ожидает ввода числа от пользователя.