Dear All. I'm completely newbie to c. I make a function to copy string and get its length but it doestn't work. What is wrong with this program?
Code:
typedef int IdxType;
typedef struct {
char TKata[20];
int len;
}kata;
typedef struct
{
int DD;
int MM;
int YYYY;
}date;
typedef struct
{
int TSize[100];
date TDate[100];
kata TFile[100];
int NBFile;
} Tab;
void PrintTable(Tab T);
int NbElmt(Tab T);
void SetFile(Tab T, IdxType i,kata v);
void CopyKata ( kata Tin , kata * Tout);
void getLen(kata L);
int main()
{
date L;
Tab T;
kata Input,v,aku;
T.TDate[1].DD = 0; T.TDate[1].MM = 0; T.TDate[1].YYYY = 0;
T.TDate[2].DD = 0; T.TDate[2].MM = 0; T.TDate[2].YYYY = 0;
Input.TKata[1] = 't'; Input.TKata[2] = '.'; Input.TKata[3] = 't';
Input.TKata[4] = 'x'; Input.TKata[5] = 't'; Input.len = 5;
T.TSize[1]=1; T.TSize[2]=1;
T.NBFile = 2;
CopyKata(Input,&(T.TFile[1]));
CopyKata(T.TFile[1],&(T.TFile[2]));
PrintTable(T);
printf("insert new file to TOC\n");
printf("Input file name: \n");
scanf("%s",v.TKata);
getLen(v);
printf("file name length: %d\n",v.len);
T.TDate[3].DD = 0; T.TDate[3].MM = 0; T.TDate[3].YYYY = 0;
SetFile(T,3,v);
T.NBFile = 3;
T.TSize[3]=3;
PrintTable(T);
return 0;
}
void PrintTable(Tab T)
{
int i,j;
printf("\nTable of Content\n");
if (NbElmt(T) != 0 )
{
for (i = 1; i < (NbElmt(T)+1);i++)
{
for (j = 1; j < (T.TFile[i].len + 1);j++)
{
printf("%c",T.TFile[i].TKata[j]);
}
printf(" %d",T.TSize[i]);
printf(" %d-" ,T.TDate[i].DD);
printf("%d-" ,T.TDate[i].MM);
printf("%d\n" ,T.TDate[i].YYYY);
}
}
else
{printf("The table is empty\n");}
}
int NbElmt(Tab T)
{
return(T.NBFile);
}
void SetFile(Tab T, IdxType i,kata v)
{ CopyKata(v,&(T.TFile[i]));
}
void getLen(kata L)
{
int i=0;
while(L.TKata[i] != '\0')
{i++;}
L.len = i-1;
}
void CopyKata ( kata Tin , kata *Tout)
{
int i;
(*Tout).len = Tin.len;
for (i = 1; i < (Tin.len +1);i++)
{
(*Tout).TKata[i] = (Tin).TKata[i];
}
}