Bueno, aqui pongo el codigo, a ver si alguien me puede ayudar, porque me compila pero no me hace lo que necesito. 
EL codigo es este 
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10
struct alumno
{
  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;  
 }; 
 typedef struct alumno DATOSALUMNO;  
main()
{
FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;
if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}    
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;   
}
do {
 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {               
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni
 = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/   
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo); 
    
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
    
    
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
    
 }while(numero_anyo !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));
 
 fclose(ficbin);
 fclose(fp);
 
}
Necesito que me pregunte por pantalla los datos, y me los meta en el fichero binario, y no lo consigo., Por favor,si alguien puede echarme una mano, se lo agradeceria, en ese caso, aqui pongo el codigo de la practica, por si alguien puede echarme una mano. Venga gracias. 