Thursday, 28 July 2016

C program for regression / line of best fit for when there is scatter of data. the equation is y = a + bx

#include<stdio.h>

main()
{
int i, noofvar;
float xi, yi, xsum, ysum, xysum, xxsum, a, b;
xsum = 0;
ysum = 0;
xysum = 0;
xxsum = 0;
printf("The output of this program will give two values a and b.\n");
printf("a and b can be used in the equation y =  a + bx.\n");
printf("Using the equation with a and b will give a regression.\n");
printf("A plot from the equation will give a line of best fit.\n");
printf("Enter the number of pairs of x and y variables:\n");
scanf("%i", &noofvar);
for(i = 1; i<=noofvar; i++)
{
printf("Enter x value %i\n",i);
scanf("%f", &xi);
printf("Enter y value %i\n", i);
scanf("%f", &yi);
xsum = xsum + xi;
ysum = ysum + yi;
xysum = xysum + xi * yi;
xxsum = xxsum + xi * xi;
}

b = (noofvar * xysum - xsum * ysum) / (noofvar * xxsum - xsum * xsum);
a = (ysum - b * xsum) / noofvar;
printf("Value of a is %f\n", a);
printf("Value of b is %f\n", b);
}

Tuesday, 31 May 2016

New ebook on simple C listings for indexed sequential file databases

I have just published a new ebook on simple C listings for indexed sequential file databases. The book and the C source code / C listings contained in it are open source. The link to the website to download it for free is

Open source ebook on databases written in C.


A website that has free Windows programs to download including working examples of C programs has the following link

A website of free programs including C databases.

Monday, 23 May 2016

A barchart plotter for integers written in C. Data saved to file and barchart written to txt file for import into word processor

This program is compiled in Linux with the gcc command
gcc programname.c -lm
The -lm means that the maths funtions are included during compilation.
From the terminal using the directory containg the file / compiler output the program can b run using ./a.out

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#define max 100
int number, ymax;
int ploty[max];
void createbar(void), updatebar(void), savedata(void), loadbar(void), plot(void), savebartxt(void);
int main(void)
{
int choice;
for(;;) {
printf("\n");
printf("1. Create a barchart.\n");
printf("2. Save barchart to a .txt file for printing.\n");
printf("3. Save data to to a data file to plot again later\n");
printf("4. Append data to a barchart.\n");
printf("5. Load a bar chart from data file.\n");
printf("6. Quit\n");
do {
printf("\nEnter your choice: ");
scanf("%i", &choice);
}while(choice < 0 && choice > 5);
switch(choice) {
case 1: createbar();
break;
case 2: savebartxt();
break;
case 3: savedata();
break;
case 4: updatebar();
break;
case 5: loadbar();
break;
case 6: exit(0);
}
}
return 0;
}
void createbar(void)
{
  int  y_data;
  int i, j, k;
for(k=1; k<=max; k++)
ploty[k] = '\0';
printf("Enter the number of y points to plot.\n");
printf("Maximum number of points is 100 or type 111 to exit.\n");
scanf("%i", &number);
if(number == 111) exit(0);
printf("Enter the maximum / largest yvalue.\n");
scanf("%i", &ymax);
for(j=1; j<=number; j++)
{
 printf("Enter y datum %i\n", j);
 scanf("%i", &y_data);
 ploty[j]=y_data;
}
plot();

}

void plot(void)
{
int xdatum, ydatum;
int i;
int yvalue;
float yscale, ybar, maxsize = 60.0;
printf( "y_data---------->\n");
  for(i=1; i<=number; i++)
    {
  yscale = maxsize/ymax;
ybar = yscale* ploty[i];
yvalue = round(ybar);  
for(xdatum =1; xdatum<=3; xdatum++){
for(ydatum=1; ydatum<=yvalue; ydatum++)
      printf("*");
 printf("\n");
}
printf("\n");
}
}


void updatebar(void)
{
  int xdatum, ydatum;
  int  y_data;
  int  i, j, l;
   FILE *prnt;
for(l=1; l<=max; l++)
ploty[l] = '\0';
 printf("Enter the number of y points to plot.\n");
     scanf("%i", &number);
for(j=1; j<=number; j++)
{
 printf("Enter y datum %i\n", j);
 scanf("%i", &y_data);
 ploty[j]=y_data;
}
printf( "y_data---------->\n");
  for(i=1; i<=number; i++)
    {
 
for(xdatum =1; xdatum<=3; xdatum++){
   for(ydatum=1; ydatum<=ploty[i]; ydatum++)
      printf("*");
 printf("\n");
}
printf("\n");
}

FILE *fp;
char filename[30];
printf("Enter a file name .txt to add bars to an already existing chart.\n");
scanf("%s",filename);
printf("\n");
fp = fopen(filename, "a+");
if((fp=fopen(filename, "a+"))==NULL) {
printf("Cannot open file.\n");
return;
}

time_t lt;
struct tm *ptr;
lt = time(NULL);
ptr = localtime(&lt);
fprintf(fp,"%s\n",asctime(ptr));

for(i=1; i<=number; i++)
    {
for(xdatum =1; xdatum<=3; xdatum++){
   for(ydatum=1; ydatum<=ploty[i]; ydatum++)
      fprintf(fp,"*");
 fprintf(fp,"\n");
}
fprintf(fp,"\n");
}
fclose(fp);

FILE *fp2;
char filename2[30];
int k;
printf("Enter a file name .dat to add data to plot at a later date.\n");
scanf("%s",filename2);
printf("\n");
fp2 = fopen(filename2, "a+");
if((fp2=fopen(filename2, "a+"))==NULL) {
printf("Cannot open file.\n");
return;
}
for(k = 1; k<= number; k++)
{
fprintf(fp2,"%i", ploty[k]);
fprintf(fp2,"\n");
}
fclose(fp2);
return;

}

void savedata(void)
{
FILE *fp;
char filename[30];
int i;
printf("Enter a file name .dat to contain data to plot at a later.\n");
printf("This can be printed using a text editor.\n");
scanf("%s",filename);
printf("\n");
if((fp=fopen(filename, "w"))==NULL) {
printf("Cannot open file.\n");
return;
}
fprintf(fp,"%i\n", ymax);
for(i = 1; i<= number; i++)
{
fprintf(fp,"%i", ploty[i]);
fprintf(fp,"\n");
}
fclose(fp);
return;
}

void loadbar(void)
{
int i;
char filename[30];
FILE *fp;
number = 0;
for(i=1; i<=max; i++)
ploty[i] ='\0';
printf("Enter a file name .dat containing data to plot.\n");
scanf("%s",filename);
printf("\n");
if((fp=fopen(filename, "r"))==NULL) {
printf("Cannot open file.\n");
return;
}
fscanf(fp,"%i", &ymax);
while(!feof(fp))
{
number = number + 1;
fscanf(fp, "%i", &ploty[number]);
}
fclose(fp);
plot();
}

void savebartxt(void)
{
FILE *fp;
char filename[30];
int i;
int xdatum, ydatum;
int yvalue;
float yscale, ybar, maxsize = 60.0;
printf("Enter a file .txt name to contain the bar chart.\n");
printf("This can be printed using a text editor. \n");
scanf("%s",filename);
printf("\n");
if((fp=fopen(filename, "w"))==NULL) {
printf("Cannot open file.\n");
return;
}
time_t lt;
struct tm *ptr;
lt = time(NULL);
ptr = localtime(&lt);
fprintf(fp,"%s\n",asctime(ptr));

fprintf(fp, "y_data---------->\n");
  for(i=1; i<=number; i++)
    {
 yscale = maxsize/ymax;
ybar = yscale* ploty[i];
yvalue = round(ybar);  

for(xdatum =1; xdatum<=3; xdatum++){
   for(ydatum=1; ydatum<=yvalue; ydatum++)
      fprintf(fp,"*");
 fprintf(fp,"\n");
}
fprintf(fp,"\n");
}
fclose(fp);
return;
}

f = cos(x) + cos(y) implemented in C

This program is compiled in Linux using the gcc command
gcc programname.c -lm
The -lm means that the maths funtions are included during compilation.

#include<stdio.h>
#include<math.h>

main()
{
const space = ' ', screenheight = 60, ycentre = 30, screenwidth = 70;
const xcentre = 35;
float xscale =7.0 , yscale = 7.0;
char screen[screenwidth][screenheight];
float xs, ys, interval, fvalue;
int period, row, col, ft, x, y, startx, starty, stopx, stopy;
char point;

/*insert spaces*/
for(col=0; col<=screenwidth; col++)
for(row=0; row<=screenheight; row++)
screen[row][col] = space;

startx = -xcentre;
stopx = xcentre;
starty =  -ycentre;
stopy = ycentre;
for(y = starty; y <= stopy; y++)
for(x = startx; x <= stopx; x++)
{
xs = x/xscale;
ys = y/yscale;
printf("xs =%f\n",xs);
printf("xy=%f\n",ys);
fvalue = cos(xs) + cos(ys);
ft=round((fvalue + 2) * 2.5);
printf("%i\n", ft);
switch(ft)
{
case 0: point = 'A';
break;
case 1: point = ' ';
break;
case 2: point = 'B';
break;
case 3: point = ' ';
break;
case 4: point = 'C';
break;
case 5: point = ' ';
break;
case 6: point = 'D';
break;
case 7: point = ' ';
break;
case 8: point = 'E';
break;
case 9: point = ' ';
break;
case 10: point = 'F';
}
screen[x+xcentre][y+ycentre] = point;
}
/*draw graph*/
for(row =0; row <= screenheight; row++)
{
for(col=0; col<=screenwidth; col++)
printf("%c",screen[row][col]);
printf("\n");
}

}

Sine wave plot implemented in C

This program is compiled using the gcc command in Linux
gcc programname.c -lm
The -lm means the mathe functions are included during compilation.

#include<stdio.h>
#include<math.h>
#define PI 3.1415926


main()
{
const increment = 15, scale = 30, centre = 40;
int angle;
int i, j;
angle = 0;
do
{
j = centre-scale*sin(angle*PI/180);
for(i=1; i<=j; i++)
printf(" ");
printf("sine\n");
angle = angle + increment;
}while(angle <= 720);
return 0;
}

Tuesday, 28 October 2014

A database that uses a random access file written in C

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<stdbool.h>
struct contactinfo{
char name[40];
char number[40];
char email[40];
};

struct filedetails{
int filelength;
int recnum;
};
struct filedetails filespec;
struct contactinfo person;
struct contactinfo blankfields;
FILE *details;
int flag = 0;
char contact[40];
long int offset=0, length;
long int size;
char filename[30];
bool recordfound;
void newsubs(void), search(void), readLine(char buffer[]), new(void), sort(void);
void list(void), delete(void), prntxt(void);
int main(void)
{
int choice;
char ch[3];
for(;;){
printf("\n");
printf("1. New file\n");
printf("2. New record\n");
printf("3. Sort\n");
printf("4. List\n");
printf("5. Search\n");
printf("6. Delete\n");
printf("7. Export to a txt file for printing.\n");
printf("8. Quit:\n");
do{
printf("\nChoose...");
readLine(ch);
choice = atoi(ch);
if(choice==1)new();
if(choice==2)newsubs();
if(choice==3)sort();
if(choice==4)list();
if(choice==5)search();
if(choice==6)delete();
if(choice==7) prntxt();
if(choice==8) exit(0);
}while(choice < 1 && choice > 8);
}
return 0;
}
void readLine(char buffer[])
{
char character;
int i=0;
do
{
character=getchar();
buffer[i]=character;
++i;
}
while(character !='\n');
buffer[i-1]='\0';
}

void newsubs()
{
printf("Enter a file name.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "r+b"))==NULL)
{
printf("Cannot open file.\n");
}
if((details=fopen(filename, "r+b"))!=NULL) {

fread(&filespec , sizeof(struct filedetails), 1,details);
printf("Records in file =%d\n",filespec.recnum);
printf("Size of file in bytes = %d\n",filespec.filelength);
printf("Enter information on new contact.\n");
printf("Name:\n");
readLine(person.name);
printf("Phone number:\n");
readLine(person.number);
printf("Email:\n");
readLine(person.email);
size = sizeof(struct contactinfo);
offset=(filespec.recnum +1)*size;
if(fseek(details, offset,0))
printf("Seek error.\n");
length = ftell(details);
printf("Pointer before writing at %ld\n",length);
if(fwrite(&person, sizeof(struct contactinfo), 1,details)==0) {
printf("Write error.");
}
else
{
length = ftell(details);
printf("Pointer after writing at %ld\n",length);
filespec.filelength= length;
filespec.recnum+=1;
rewind(details);
fwrite(&filespec, sizeof(struct filedetails), 1,details);
person = blankfields;
fclose(details);
}
}
}

void search()
{
int searchcount=0;
printf("Enter a file name.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "r+b"))==NULL) {
printf("Cannot open file.\n");
}
else
{
if((details=fopen(filename, "r+b"))!=NULL)
flag = 0;
recordfound=0;
fread(&filespec , sizeof(struct filedetails), 1,details);
printf("Enter a name to look for.\n");

readLine(contact);
offset=0;
while(!feof(details))
{
searchcount+=1;
size = sizeof(struct contactinfo);
offset+=size;
if(fseek(details, offset,0)){
printf("Seek error.");
}
else
{
fread(&person, sizeof(struct contactinfo), 1, details);

if(strcmp(contact, person.name)==0)
{
recordfound=1;
printf("%s\n",person.name);
printf("%s\n",person.number);
printf("%s\n",person.email);
printf("\n");
}
if(searchcount == filespec.recnum)break;
}
}
fclose(details);
if(recordfound == 0)
{
printf("Record not found.\n");
}
else
{
if(recordfound == 1) recordfound== 0;
flag = 1;
}
}
}


void new()
{
printf("Enter a file name.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "w+b"))==NULL) {
printf("Cannot open file.\n");
}
filespec.recnum=0;
fwrite(&filespec , sizeof(struct filedetails), 1,details);
printf("New file created\n");
fclose(details);
}


void sort()
{
int recnum;
int i;
struct contactinfo temp;
long int u;
long int v;
printf("Enter a file name.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "r+b"))==NULL) {
printf("Cannot open file.\n");
}
else
{
fread(&filespec , sizeof(struct filedetails), 1,details);
for(u=1; u<filespec.recnum; u++)
{
for (v=u+1; v<=filespec.recnum; v++){
size = sizeof(person);
fseek(details, sizeof(person)*u,0);
fread(&person, sizeof(person), 1, details);
fseek(details, sizeof(person)*(v),0);
fread(&temp, sizeof(person), 1, details);
if(strcmp(person.name,temp.name)>0)
{
fseek(details, sizeof(person)*(u),0);
fwrite(&temp, sizeof temp, 1,details);
fseek(details, sizeof(person)*(v),0);
fwrite(&person, sizeof(person), 1,details);
}
}
}
fclose(details);
}
}

void list()
{
int counter = 0;
printf("Enter a file name.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "r+b"))==NULL) {
printf("Cannot open file.\n");
}
if((details=fopen(filename, "r+b"))!=NULL) {
fread(&filespec , sizeof(struct filedetails), 1,details);
printf("Records in file =%d\n",filespec.recnum);
printf("Size of file in bytes =%d\n", filespec.filelength);
size = sizeof(struct contactinfo);
offset=0;
while(!feof(details))
{
counter +=1;
offset+=size;
if(fseek(details, offset,0)){
printf("Seek error.");
}
else
{
fread(&person, sizeof(struct contactinfo), 1, details);
printf("\n");
printf("%s\n",person.name);
printf("%s\n",person.number);
printf("%s\n",person.email);
printf("\n");
if(counter == filespec.recnum)break;
}
}
fclose(details);
}
}   
   
void delete()
{   

long int offset2=0;
int recordcount;
int counter=0;
int counter2=0;
char filename2[30];
char reply;
FILE *tempfile;
search();
if(flag == 0)
{
printf("Exiting function delete.\n");
}
else
{
if((details=fopen(filename, "r+b"))==NULL)
{
printf("Cannot open file.\n");
}
else
{
if((details=fopen(filename, "r+b"))!=NULL) {
fread(&filespec , sizeof(struct filedetails), 1,details);
recordcount = filespec.recnum;
printf("Enter a file name for the destination of the edited files.\n");
readLine(filename2);
if((tempfile=fopen(filename2, "w+b"))==NULL)
{
printf("Cannot open file.\n");
}
else
{
filespec.recnum=0;
fwrite(&filespec , sizeof(struct filedetails), 1,tempfile);
printf("New file created\n");
fclose(tempfile);
if((tempfile=fopen(filename2, "r+b"))!=NULL)
{
printf("File %s is open for input.\n",filename2);
}
size = sizeof(struct contactinfo);
offset=0;
while(!feof(details))
{
person = blankfields;
counter +=1;
offset+=size;
if(fseek(details, offset,0)){
printf("Seek error.");
}
else
{
fread(&person, sizeof(struct contactinfo), 1, details);
printf("%s\n",person.name);
if(strcmp(contact, person.name)!=0)
{
counter2+=1;
if(counter2 == recordcount) break;
offset2=(counter2)*size;
if(fseek(tempfile, offset2,0)){
printf("Seek error.");
}
else
{
if(fwrite(&person, sizeof(struct contactinfo), 1, tempfile));
length = ftell(tempfile);
}
}
}
}
fclose(details);
filespec.recnum=counter2-1;


filespec.filelength=length;
rewind(tempfile);
fwrite(&filespec , sizeof(struct filedetails), 1,tempfile);
fclose(tempfile);
}
}
}
}
}

void prntxt()
{
int count;
FILE *stream;
char filenametxt[30];
count = 0;
printf("Enter a 'filename.txt' file name to create and write to.\n");
readLine(filenametxt);
printf("\n");
stream = fopen(filenametxt, "w+");
if((details=fopen(filenametxt, "w+"))==NULL) {
printf("Cannot open file.\n");
}
else
{
int counter = 0;
printf("Enter a file name to read records from.\n");
readLine(filename);
printf("\n");
if((details=fopen(filename, "r+b"))==NULL) {
printf("Cannot open file.\n");
}
else
{
if((details=fopen(filename, "r+b"))!=NULL) {
fread(&filespec , sizeof(struct filedetails), 1,details);
size = sizeof(struct contactinfo);
offset=0;
while(!feof(details))
{
counter +=1;
count +=1;
offset+=size;
if(fseek(details, offset,0)){
printf("Seek error.");
}
else
{
fread(&person, sizeof(struct contactinfo), 1, details);
fprintf(stream,"%i\n",count);
fprintf(stream,"%s\n", person.name);
fprintf(stream,"%s\n", person.number);
fprintf(stream,"%s\n", person.email);
fprintf(stream,"\n");
if(counter == filespec.recnum)break;
}
}
}
}
}
fclose(details);
fclose(stream);
}

A sorted single linked list database written in C

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
struct addr{
char name[40];
char street[40];
char district[40];
char town[40];
char county[40];
char country[40];
char postcode[40];
char telno[40];
char email[40];
struct addr *next;
};
typedef struct addr address;
address *temp, *start, *pointer,  *i= NULL;

void list(),  add(void),  deletion(void), search(void);
void save(), load(void), txtoutput(void), sort(void);
void readLine(char buffer[]);
int main(void)
{
int choice;
for(;;){
printf("\n");
printf("1.  Insert a record\n");
printf("2.  List the file\n");
printf("3.  Delete a record\n");
printf("4.  Save the file\n");
printf("5.  Save to a text file for output to a wp\n");
printf("6.  Search for a record\n");
printf("7.  Load the file\n");
printf("8.  Quit\n");
do{
printf("\nEnter your choice: ");
scanf("%i",&choice);
getchar();
if(choice==1) add();
if(choice==2) list();
if(choice==3) deletion();
if(choice==4) save();
if(choice==5) txtoutput();
if(choice==6) search();
if(choice==7) load();
if(choice== 8) exit(0);
}while(choice < 1 && choice >8);
}
return 0;
}



void add()
{
address *q;
pointer = (address*) malloc(sizeof(address));
q = (address*) malloc(sizeof(address));
printf("Enter information on new customer\n");

printf("Enter name: ");
readLine(pointer->name);

printf("Enter street: ");
readLine(pointer->street);

printf("Enter district / parish: ");
readLine(pointer->district);

printf("Enter town / city: ");
readLine(pointer->town);

printf("Enter county: ");
readLine(pointer->county);

printf("Enter country: ");
readLine(pointer->country);

printf("Enter postcode: ");
readLine(pointer->postcode);

printf("Enter telephone number: ");
readLine(pointer->telno);

printf("Enter email address: ");
readLine(pointer->email);
if (start == NULL || strcmp(pointer->name, start->name)<0)
{
pointer->next=start;
start=pointer;
}
else
{
q = start;
while(q->next!=NULL && strcmp(q->next->name , pointer->name) < 0)
q=q->next;
pointer->next=q->next;
q->next=pointer;
}
}



void list()
{

if(start==NULL)
printf("No records to view");
/*for (temp=start;temp!=NULL;temp=temp->next)*/
temp = start;
while(temp!=NULL)
{
printf("\n");
printf("%s\n",temp->name);
printf("%s\n",temp->street);
printf("%s\n",temp->district);
printf("%s\n",temp->town);
printf("%s\n",temp->county);
printf("%s\n",temp->country);
printf("%s\n",temp->postcode);
printf("%s\n",temp->telno);
printf("%s\n",temp->email);
printf("\n");
temp=temp->next;
}
}

void readLine(char buffer[])
{
char character;
int i=0;
do
{
character=getchar();
buffer[i]=character;
++i;
}
while(character !='\n');
buffer[i-1]='\0';
}


void save()
{
FILE *fp;
if((fp=fopen("maillist", "wb"))==NULL) {
printf("Cannot open file.\n");
return;
}
temp=start;
while(temp){
fwrite(temp,
sizeof(struct addr), 1, fp);
temp = temp->next;
}
fclose(fp);
}

void load()
{
FILE *fp;
if((fp=fopen("maillist", "rb"))==NULL) {
printf("Cannot open file,\n");
return;
}
start = ( address*) malloc(sizeof(address));
/*while(start){
temp=start->next;
free(temp);
start=temp;
}*/

free(start);
start=NULL;
while(!feof(fp)){

i = ( address*) malloc(sizeof(address));
temp = ( address*) malloc(sizeof(address));
if(!i){
printf("Out of memory.\n");
return;
}
if(1!=fread(i,sizeof(struct addr),1,fp))break;

if(start!=NULL)
{
temp = start;
while(temp->next!=NULL)
temp=temp->next;
i->next=NULL;
temp->next=i;
}
else
{
start=i;
i->next=NULL;
}
}
fclose(fp);
}

void txtoutput(void)
{
int t;
int count;
FILE *stream;
char filename[30];
count = 0;
printf("Enter a file name.\n");
scanf("%s",filename);
printf("\n");
stream = fopen(filename, "w+");
temp = start;
while(temp) {
count = count +1;
fprintf(stream,"%i\n",count); 
fprintf(stream,"%s\n", temp->name);
fprintf(stream,"%s\n", temp->street);
fprintf(stream,"%s\n", temp->district);
fprintf(stream,"%s\n", temp->town);
fprintf(stream,"%s\n", temp->county);
fprintf(stream,"%s\n", temp->country);
fprintf(stream,"%s\n", temp->postcode);
fprintf(stream,"%s\n", temp->telno);
fprintf(stream,"%s\n", temp->email);
fprintf(stream,"\n");
temp=temp->next;
}
fclose(stream);
return;
}

void search()
{
int flag=0;
char name[40]; 
printf("Enter name of person to search for\n");
readLine(name);
temp=start;
while(temp)
{
if(strcmp(name, temp->name)==0)
{
printf("%s\n",temp->name);
printf("%s\n",temp->street);
printf("%s\n",temp->district);
printf("%s\n",temp->town);
printf("%s\n",temp->county);
printf("%s\n",temp->country);
printf("%s\n",temp->postcode);
printf("%s\n",temp->telno);
printf("%s\n",temp->email);
flag= 1;
}
temp=temp->next;
}
if(flag==0) 
printf("Not found in list\n");
}

void deletion()
{
 address *t, *pt;
t = ( address*) malloc(sizeof(address));
pt = ( address*) malloc(sizeof(address));
char name[40];
if(start == NULL)
{
printf("List is empty\n");
return;
}
printf("Enter name of person to be deleted\n");
readLine(name);
if(strcmp(name,start->name)==0)
{
temp=start;
start = start->next;
free(temp);
printf("Record is deleted\n");
return;
}
pt=start;
t=start->next;
while(t!=NULL&& strcmp(t->name,name)!=0)
{
pt =t;
t=t->next;
}
if(t==NULL)
{
printf("Record does not exist\n");
return;
}
if(strcmp(t->name,name)==0)
{
pt->next=t->next;
printf("Record is deleted\n");
free(t);
return;
}
}