Witam
Mam problem ponieważ we funkcji void DodajOpisStudenta stworzyłem petle i po jej jednokrotnym wykonaniu petla zamiast zaczac sie od podaj nazwisko studenta to automatycznie przechodzi do podaj imie studenta, co moze byc tego przyczyna ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define ROZMIAR 5
typedef struct {
char Nazwisko[30];
char Imie[15];
short czyMaZaleglosci;
float SredniaOcen;
} STUDENT;
char WyborOpcji();
void WypiszListeStudentow();
void DodajOpisStudenta();
void ModyfikujOpisStudenta();
void UsunOpisStudenta();
int main()
{
STUDENT Studenci[ROZMIAR];
char opcja='?';
printf("Program STUDENCI\n");
while(opcja != '0') {
switch(opcja) {
case '1': WypiszListeStudentow(Studenci[ROZMIAR]);
break;
case '2':DodajOpisStudenta(Studenci[ROZMIAR]);
break;
case '3': ModyfikujOpisStudenta(Studenci[ROZMIAR]);
break;
case '4': UsunOpisStudenta(Studenci[ROZMIAR]);
break;
case '?':
printf("\n");
printf(" 1. Lista studentow\n");
printf(" 2. Dodanie pozycji\n");
printf(" 3. Modyfikacja pozycji\n");
printf(" 4. Usuniecie pozycji\n");
printf(" 0. Zakonczenie pracy\n");
printf(" ?. Menu\n\n");
break;
default:
break;
}
opcja=WyborOpcji("Podaj numer opcji: ");
}
}
char WyborOpcji(char prompt[]) {
char linia[80];
char opcja;
printf("%s", prompt);
if(gets(linia)==NULL) return '\0';
return linia[0];
}
void WypiszListeStudentow() {
printf("Lista studentow:\n");
}
void DodajOpisStudenta(STUDENT tab[ROZMIAR])
{
int i;
printf("Dodawanie opisu studenta\n");
for(i=0;i<ROZMIAR; i++)
{
puts("Podaj nazwisko studenta");
gets(tab[i].Nazwisko);
puts("Podaj imie studenta");
gets(tab[i].Imie);
puts("Czy student ma zaleglosci");
scanf("%h ",&tab[i].czyMaZaleglosci);
puts("Podaj srednia ocen studenta");
scanf("%1f ",&tab[i].SredniaOcen);
}
}
void ModyfikujOpisStudenta() {
printf("Modyfikacja opisu studenta\n");
}
void UsunOpisStudenta() {
printf("Usuwanie opisu studenta\n");
}