I have juz started to understand a bit about linked lists...was juz wondering if anyone knew what this code does???
Thanks for your help
PHP Code:
typedef struct linkList
{
char *line;
struct linkList *next,*prev;
}lineList;
lineList *head = NULL, *tail = NULL;
void addtolink(char *lin,int lin1);
void printlinklist(lineList *tmp);
int main(int argc, char *argv[])
{
static FILE *fp = NULL;
if (argc != 2)
{
fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
return 0;
}
char *fname = argv[1];
if (fp == NULL)
{
if ((fp = fopen(fname, "r")) == NULL)
{
printf("NEW FILE");
fp = fopen(fname, "w+");
}
else
{
int x = 0;
char c;
char lin1[1000];
fp = fopen(fname, "r");
while((c = fgetc(fp)) != EOF)
{
if ( c != '\n')
{
lin1[x] = c;
x = x + 1;
}
else
{
lin1[x] = '\0';
char *lin2;
int strlin1 = strlen(lin1);
lin2 = (char *)malloc(sizeof(lineList)*(strlin1));
lin2 = lin1;
addtolink(lin2,strlin1);
x = 0;
}
}
printlinklist(head->next);
}
}
return 0;
}
void addtolink(char *lin,int lin1)
{
char *line2;
lineList *newline;
line2 = (char*)malloc(sizeof(char)*(lin1));
line2 = lin;
if ((newline = (lineList*)malloc(sizeof(lineList)))!= NULL)
{
newline -> line = line2;
if (head == NULL)
{
printf("1");
head = newline;
tail = newline;
}
else
{
printf("2");
tail -> next = newline;
newline -> prev = tail;
newline -> next = NULL;
tail = newline;
}
}
return;
}
void printlinklist(lineList *tmp)
{
printf("3");
printf("%s",head -> line);
while (tmp != NULL)
{
printf("%s",tmp -> line);
tmp = tmp -> next;
}
}