지식인에 올라고 질문 소스 코드 입니다. malloc 할때 캐스팅이 안되서 컴파일이 오류가 난거 같네요.
#include <stdio.h>
#include <malloc.h>
#include <string.h>
typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];
struct tagLinkedList *prev;
struct tagLinkedList *next;
} ADDR;
ADDR *g_pAddrHead = NULL;
int add_list(ADDR *addr);
void print_list(void);
void remove_list(void);
int add_list(ADDR *addr)
{
ADDR *plocal;
FILE *fp;
fp = fopen("c:\\test.txt", "a+b");
if (fp == NULL)
{
perror("파일 개방 에러");
return 0;
}
// StudentHead가 초기화 되지 않은 경우, 한 번만 실행됩니다.
if (g_pAddrHead == NULL)
{
g_pAddrHead =(ADDR*)malloc(sizeof(ADDR));
if (g_pAddrHead == NULL)
{
return 0;
}
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal =(ADDR*) malloc(sizeof(ADDR));
if (plocal == NULL)
{
return 0;
}
g_pAddrHead->next = plocal;
plocal->prev = g_pAddrHead;
g_pAddrHead = plocal;
g_pAddrHead->next = NULL;
}
strcpy(g_pAddrHead->name, addr->name);
strcpy(g_pAddrHead->tel, addr->tel);
strcpy(g_pAddrHead->addr, addr->addr);
fwrite(addr, 1, sizeof(ADDR), fp);
fclose(fp);
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
ADDR addr;
puts("추가할 주소 데이터를 입력하세요.");
puts("프로그램을 종료하려면 엔터키를 치십시오.");
while (1)
{
memset(&addr, 0, sizeof(ADDR));
printf("이름 : "); gets(addr.name);
if (strlen(addr.name) == 0) break;
printf("전화 : "); gets(addr.tel);
printf("주소 : "); gets(addr.addr);
if (add_list(&addr))
{
printf("\n주소록에 데이터가 추가되었습니다.\n\n");
}
}
return 0;
}