View Single Post
Old 10-17-2004, 09:01 PM   #1 (permalink)
if13121
Registered User
 
if13121's Avatar
 
Join Date: Oct 2004
Location: Bandung,Indonesia
Posts: 16
if13121 is on a distinguished road
Unhappy simple c question

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];
	}
	
}

Last edited by Valmont; 10-18-2004 at 04:42 AM.
if13121 is offline   Reply With Quote