All pastes #2132930 Raw Edit

lab7

public text v1 · immutable
#2132930 ·published 2012-03-27 19:46 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef B
#define B 2
#endif
#define N 20
typedef struct{char l[N];char f[N];}n;typedef struct{int i;n n;int s;}r;typedef struct{r**d;size_t a;size_t u;}rl;
void lt(rl*l){size_t i=0;l->d=malloc(B*sizeof(r*));l->a=B;l->u=0;for(i=0;i<B;i++){l->d[i]=NULL;}}
void ld(rl*l){size_t i=0;for(i=0;i<B;i++){free(l->d[i]);}free(l);}
int li(rl*l,const r*c){if(l->u>=l->a){size_t i=0;l->d=realloc(l->d,sizeof(r*)*(l->a+B));
if(l->d==NULL){return 0;}for(i=l->a;i<(l->a+B);i++){l->d[i]=NULL;}l->a+=B;}
l->d[l->u]=malloc(sizeof(r));if(l->d[l->u]==NULL){return 0;}
l->d[l->u]->i=c->i;l->d[l->u]->n=c->n;l->d[l->u]->s=c->s;l->u++;return 1;}

int main(void){
	rl list;
	r david, ryan;
	lt(&list);
	
	david.i = 812683;
	ryan.i = 123456;
	david.s = 100;
	ryan.s = 100;
	
	strcpy(david.n.f, "david");
	strcpy(david.n.l, "etc");
	strcpy(ryan.n.f, "ryan");
	strcpy(ryan.n.l, "etc");
	
	li(&list, &david);
	li(&list, &ryan);
	li(&list, &ryan);
	
	printf("first record name: %s\n",list.d[0]->n.l);
	printf("Second record name: %s\n",list.d[1]->n.l);
	printf("Third record name: %s\n",list.d[2]->n.l);
}