지식인에 올라고 질문 소스 코드 입니다. 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;
}