怎么将二进制文件转换成可以阅读的文本文件

如何将二进制文件转换成可以阅读的文本文件
我想把一个二进制文件转换成可以阅读的文本文件,以下是我写的程序,不知道错在什么地方,老是转不过来。如能帮我解决,重赏!!!
#include<stdio.h>
#include<stdlib.h>

typedef struct data123
{
  unsigned char* buffer[100];
}DATA;


 DATA readbin(FILE* bin);
 void writetxt(DATA* data1,FILE* txt);

int main(void)
{
  FILE* bin;
  FILE* txt;
  DATA data1;


  if((bin=fopen("123.bin","rb"))==NULL)
  printf("can't open the file!\n");

  if((txt=fopen("a.txt","w"))==NULL)
  printf("can't open the file!\n");

  while(!feof(bin))
  {
  data1=readbin(bin);
  fprintf(txt,"%c",&data1);
  }
  writetxt(&data1,txt);

  if(feof(bin))
  {
  printf("error");
  }
  fclose(bin);
  fclose(txt);

  return 0;
  }


  DATA readbin(FILE* bin)
  {
  int ioresult;
  DATA data2;
  ioresult=fread(&data2,sizeof(DATA),1,bin);
  if(!ioresult)
  if(!feof(bin))
  exit(100);
  }

  void writetxt(DATA* data1,FILE* txt)
  {
  fwrite(data1,sizeof(DATA),1,txt);

  }

------解决方案--------------------
C/C++ code
 void writetxt(DATA* data1,FILE* txt) 
    { 
    fwrite(data1,sizeof(DATA),1,txt); 

      }//这个其实还是二进制,你把DATA里的数据以字符串格式写入就是了