ficheros en binario

detroya
21 de Abril del 2010
Mi problema es el siguiente:

Una empresa de coches tiene almacenado en un fichero de texto la información de cada una
de las ventas del último año. Cada venta está descrita por la fecha (Día/Mes/Año), el nombre
del artículo vendido (sin espacios) y el precio de venta. El fichero que tiene la información
empieza con una cabecera que indica qué es cada columna del fichero.
a) Realizar la definición de una función que lea la información de ventas del fichero de texto y la
escriba en un fichero binario con el siguiente formato:
Para cada venta escribirá en el fichero un entero para el día, un entero para el mes, un entero
para el año, una cadena de 10 caracteres para el coche y un entero para el precio.
La función recibirá como parámetros los nombres de los ficheros (de texto y binario) y
devolverá el número de ventas reflejadas en el fichero de texto.
El prototipo de la función es el siguiente:
int ventas_tb(char * ftxt, char * fbin);
b) Realizar la definición de una función que lea la información de ventas del fichero binario
creado por la función ventas_tb desarrollada en el apartado anterior y la escriba en un
fichero de texto con el formato original. La función recibirá como parámetros los nombres de los
ficheros (binario y de texto) y devolverá el número de ventas reflejadas en el fichero de texto.
El prototipo de la función es el siguiente:
int ventas_bt(char * fbin, char * ftxt);
Donde:
char * ftxt Puntero a la cadena de caracteres que contiene el nombre del fichero de texto.
char * fbin Puntero a la cadena de caracteres que contiene el nombre del fichero binario.
El codigo no tiene error de compilacion pero no me crea el archivo binario, si alguien pudiese encontrar los fallos y orientarme para la realizacion de la funcion se lo agradeceria. Un saludo.

#include <stdio.h>
#include <stdlib.h>
int ventas_tb(char * ftxt, char * fbin);
main()
{
FILE * ftxt;
FILE * fbin;
char coche[10];
int dia;
int mes;
int ano;
int precio;
int cont;
char NombreFichero[100];
cont=0;
printf("Nombre del fichero con los datos de ventan");
scanf("%s",NombreFichero);
ftxt=fopen(NombreFichero,"rt");
if (ftxt==NULL)
{
printf("nFallo en la asignacion de memorian");
exit(0);
}
fbin=fopen(NombreFichero,"wb");
if (fbin==NULL)
{
printf("nFallo en la asignacion de memorian");
exit(0);
}
while (feof(ftxt)==0)
{
fscanf(ftxt,"%d%d%d %s %d",&dia,&mes,&ano,coche,&precio);
if(feof(ftxt)==0)
{
while (feof(fbin)==0)
{
fwrite(&dia,&mes,&ano,coche,precio,sizeof(int),fbin);
cont++;
}
}
}
fclose(ftxt);
fclose(fbin);
}