Некорректная запись в массив структур - 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=
и ожидает ввода числа от пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д