Hola gracias por la ayuda, mira segun yo avance un poco pero me quedo trabado en una parte... para empezar el programa toma un archivo de texto que tiene como contenido algo mas o menos asi:
juan hernandez,perez,computacion,009090
jose,soto,leon,quimica,22222
.
.
etc.
el programa lo que hace es un archivo nuevo y pasa la informacion del anterior al nuevo como archivo de acceso directo para que quede todo la informacion seguida en una sola linea, claro con los espacios de cada cadena, pero ahora mi problema es que a la hora de pasaar los datos al archivo nuevo solo pasa el ultimo alumno y lo que quiero es que se pasen todos los alumnos del archivo, les muestro el codigo que llevo...
/*
PROGRAMA DE CREACIÓN Y ESCRITURA EN UN ARCHIVO
DE ACCESO DIRECTO
*/
#include <stdlib.h>
#include <stdio.h>
char menu();
FILE *archivo=NULL;
void insertarAlumno();
void buscarAlumno();
char nombreArchivo [15];
void crearArchivo();
typedef struct{
char nombre[25];
char apellidoPaterno[25];
char apellidoMaterno[25];
char licenciatura[40];
char matricula[15];
}Alumno;
Alumno alu;
int main(){
int opcion = 0;
while(opcion != 3){
printf("Programa de manejo de alumnos: ");
printf("\n1. Crear un nuevo archivo de alumnos");
printf("\n2. Cargar el archivo de acceso directo");
printf("\n3. Salir");
printf("\nQue opcion deseas: ");
scanf("%d",&opcion);
if(opcion == 1){
crearArchivo();
}
else if(opcion == 2){
insertarAlumno();
}
else if(opcion ==3){
printf("Fin del programa");
}
else{
printf("\nOpcion no válida");
}
}
}
void crearArchivo(){
FILE *archivoDirecto;
archivoDirecto=fopen("alumnosDirecto.txt","w");
fclose(archivoDirecto);
}
void insertarAlumno(){
FILE *archivoDirecto;
int idAlumno;
archivoDirecto=fopen("alumnosDirecto.txt","a");
printf("\nNombre de archivo que desa cargar: ");
scanf("%s",&nombreArchivo);
archivo = fopen(nombreArchivo,"r");
while(!feof(archivo)){
fscanf(archivo,"%[^,],%[^,],%[^,],%[^,],%[^\n]\n",&alu.nombre,&alu.apellidoPaterno,&alu.apellidoMaterno,&alu.licenciatura,&alu.matricula);
}
fseek(archivoDirecto,idAlumno*sizeof(Alumno),SEEK_SET);
fwrite(&alu,sizeof(Alumno),1,archivoDirecto);
fclose(archivoDirecto);
}
Sospecho que mi error se encuentra en esta parte pero no se muy bien...
while(!feof(archivo)){
}