#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
struct Osoba {
char imie[20];
char nazwisko[20];
int rokurodzenia;
char numerkonta[27]; // +1
char nazwabanku[20];
int kwota;
};
struct Osoba TablicaOsob[] = {
{ "Karol","Kot",1998,"31415926535897932384626433","Bank Bank",13248 },
{ "Karol","Kot",1998,"31415926535897932384626433","Bank Bank",13246 } ,
{ "Karol","Kot",1998,"31415926535897932384626433","Bank Bank",13247 } };
int liczba_osob =3;
int main(void) {
while(1)
{
int suma;
suma=0;
int najwieksza;
najwieksza=0;
char wybor = 0;
printf(" Jeśli chcesz wyświetlić pełną listę kont wpisz 1 \n jeśli chcesz sprawdzić który posiadacz konta przechowuje na nim największą a który najmniejszś kwotę wpisz 2 \n jeśli chcesz poznać sumę pieniędzy wszystkich urzytkowników wpisz 3 \n (jesli chcesz wprowadzic nowa osobe wpisz 4)");
wybor = 0;
wybor=getchar();
switch(wybor)
{
case '1':
printf("W tablicy struktur ListaOsoba typu Osoba mamy nastepujace dane:\n");
for (int i = 0; i < liczba_osob; i++) {
printf("TablicaOsob[%d]\n", i);
printf("imie: %s, nazwisko: %s\n, rokurodzenia: %d\n, numerkonta: %s\n, nazwabanku: %s\n, kwota: %i\n \n", TablicaOsob[i].imie, TablicaOsob[i].nazwisko, TablicaOsob[i].rokurodzenia, TablicaOsob[i].numerkonta, TablicaOsob[i].nazwabanku, TablicaOsob[i].kwota);
}
break;
case '2':
najwieksza = TablicaOsob[0].kwota;
for (int i = 1; i < liczba_osob; i++)// 2
{
if( TablicaOsob[i].kwota > najwieksza )
{
najwieksza = TablicaOsob[i].kwota;
}
}
printf("najwieksza: %i\n \n", najwieksza);
break;
case '3':
for (int i = 0; i < liczba_osob; i++)
{
suma=suma+TablicaOsob[i].kwota;
}
printf("suma: %i\n \n", suma);
break;
case '4':
liczba_osob =liczba_osob +1;
printf("wpisz imie:");
scanf("%s", TablicaOsob[liczba_osob].imie[20]);
printf("imie nowe: %s\n" , &TablicaOsob[liczba_osob].imie);
/*
cin.ignore();
printf("wpisz nazwisko:");
cin >> TablicaOsob[liczba_osob].nazwisko;
cin.ignore();
printf("wpisz rok urodzenia:");
cin >> TablicaOsob[liczba_osob].rokurodzenia;
cin.ignore();
printf("wpisz numer konta:");
cin >> TablicaOsob[liczba_osob].numerkonta;
cin.ignore();
printf("wpisz nazwe banku:");
cin >> TablicaOsob[liczba_osob].nazwabanku;
cin.ignore();
printf("wpisz kwote:");
cin >> TablicaOsob[liczba_osob].kwota;
cin.ignore();
*/
break;
}
//printf("wyszedłem z zewnętrznej pętli while \n");
}
}
Problem jest następujący: po wprowadzeniu imienia poprzez wybranie 4 a następnie próbie wyświetlenia go przy pomocy wpisania 1 następuje wyświetlenie losowych symboli. Skoro pobranie imienia następuje poprawnie ( co, jeśli dobrze rozumiem pokazywać powinien printf z linii 89 ) to dlaczego próba wyświetlenia bezpośrednio z tablicy kończy się błędem?
Istotne fragmenty programu znajdują się w liniach 9 i 88.