I am trying to read a line from txt file and insert to struct doubly linked list.
I used buffer[] to read a line from file, but the buffer read more than a line.
Here's the struct
#define MAX_NAME 10
#define MAX_NUM 20
#define MAX_EMAIL 50
typedef struct Member {
struct Member *next;
struct Member *prev;
char m_name[MAX_NAME];
char m_num[MAX_NUM];
char m_email[MAX_EMAIL];
}MB;
typedef struct LinkedList {
MB *head;
MB *tail;
int cnt; //count
}list;
And here's the code(file to list)
void fileToList(list *list) {
char buffer[85] = {0, };
char *ptr = strtok(buffer, "|");
FILE *fp = fopen("member.txt", "rt");
while (!feof(fp))
{
MB *Node = CreateNode();
fgets(buffer, sizeof(buffer), fp);
ptr = strtok(buffer, "|");
strcpy_s(Node->m_name, sizeof(Node->m_name),ptr);
ptr = strtok(NULL, "|");
strcpy_s(Node->m_num, sizeof(Node->m_num), ptr);
ptr = strtok(NULL, "\r");
strcpy_s(Node->m_email, sizeof(Node->m_email), ptr);
if (isEmpty(list) == 1) {
Node->prev = list->head;
list->head->next = Node;
Node->next = list->tail;
list->tail->prev = Node;
list->cnt += 1;
}
else {
Node->prev = list->tail->prev;
list->tail->prev->next = Node;
list->tail->prev = Node;
Node->next = list->tail;
list->cnt += 1;
}
}
fclose(fp);
}
And here's the txt file...
John|12345678|asdf@gmail.com
Steve|23456789|qwer@gmail.com
June|98765432|qwop@gmail.com
What should I do?