Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - josri

#11
Ya he solucionado el problema, gracias rir3760 por la informacion
#12
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...


Citar

/*
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...
Citar
while(!feof(archivo)){
}
#13
Hola saludos a todos, vengo para ver si me pueden hechar un cable, mi problema es el siguiente, tengo el codigo para poder leer un archivo secuencial, pero me falta escribir ese mismo archivo a uno de acceso directo y poder consultar el de acceso directo pero solo me quedo hasta la lectura del archivo secuencial :huh:...

Citar
#include <stdio.h>
#include <string.h>

int main(){
   FILE *archivo=NULL;
   char nombreArchivo [15];
   char contenido [128];
   char nombre [50];
   char paterno [50];
   char materno [50];
   char licenciatura[50];
   char matricula[15];

   printf("\nNombre de archivo: ");
   scanf("%s",&nombreArchivo);
   archivo = fopen(nombreArchivo,"r");

   while(archivo == NULL){
      printf("El archivo no pudo abrirse");
      printf("\n\nNombre de archivo: ");
      scanf("%s",&nombreArchivo);
      archivo = fopen(nombreArchivo,"r");
   }

   while(!feof(archivo)){

      fscanf(archivo,"%[^,],%[^,],%[^,],%[^,],%[^\n]\n",&nombre,&paterno,&materno,&licenciatura,&matricula);
      printf("\nNombre:%s",nombre);
      printf("\nA.Paterno:%s",paterno);
      printf("\nA.Materno:%s",materno);
      printf("\nLicenciatura:%s",licenciatura);
      printf("\nMatricula:%s",matricula);
      printf("\n----------------------------------\n");
    }
   fclose(archivo);
   system("pause");
   return 0;
}