Ja bym zamiast tablicy zrobiła sobie listę dynamiczną. Czyli takie struktury, gdzie każda pokazuje na następną.
Struktura mogła by wyglądać tak:
typedef struct Student
{
char* imie;
char* nazwisko;
char* nr_indeksu;
struct Student *next; //wskaznik na nastepny element
}student;
odczytywanie z pliku mozesz potraktowac jako tworzenie listy.
Proponuje bys imie,nazwisko,mr indeksu nie oddzielal przecinkami tylko TABem. Odczytywanie stanie się wtedy bardzo proste. Oto przykładzik:
Z gory zaznaczam, ze moga byc tu drobne bledy, gdyz pisze od reki.
I gdzies np globalnie zadeklaruj sobie wskaznik poczatku tej listy.
Np.
student *pocz=NULL;
void dodaj (void)
{
student *rob;
rob=pocz;
char a[10],b[10],c[10];
plik=fopen("studenci.txt","r");
while(!feof(plik))
{
if (rob==pocz)
{
pocz=new student;
fscanf(plik,"%s \t %s \t %s\n",a,b,c);
pocz->imie=new char[strlen(a)+1];
strcpy(pocz->imie,a)
pocz->nazwisko=new char[strlen(b)+1];
strcpy(pocz->nazwisko,b)
pocz->nr_indeksu=new char[strlen(c)+1];
strcpy(pocz->nr_indeksu,c)
pocz->nast=NULL;
}
else //czyli jest juz cos w liscie
{
while (rob->nast!=NULL) rob=rob->nast;
rob->nast=new student;
rob=rob->nast;
fscanf(plik,"%s \t %s \t %s\n",a,b,c);
rob->imie=new char[strlen(a)+1];
strcpy(rob->imie,a)
rob->nazwisko=new char[strlen(b)+1];
strcpy(rob->nazwisko,b)
rob->nr_indeksu=new char[strlen(c)+1];
strcpy(rob->nr_indeksu,c)
rob->nast=NULL ;
}
fclose(plik)
}
Na tej podstawie mozesz wykopnac kazda operacje na bazie jaka tylko Ci sie podoba.
Pozdrawiam!