Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct
- {
- char nombreCalle[50];
- } Direccion;
- typedef struct
- {
- char nombre[50];
- int edad;
- int arreglo_notas[50];
- int validos_notas;
- Direccion direccionAlumno;
- } Alumno;
- Alumno cargarAlumno();
- void mostrarArreglo(int arreglo[50],int validos);
- void mostrarAlumno(Alumno unAlumno);
- Direccion cargarDireccion();
- void mostrarDireccion(Direccion d);
- int main()
- {
- mostrarUnRegistro("datos.info",3);
- /*
- //este es nuestro buffer!
- FILE * bufferarchivo;
- bufferarchivo = fopen("datos.info","rb");
- if (bufferarchivo == NULL )
- {
- printf("El archivo no existe\n");
- fclose(bufferarchivo);
- bufferarchivo = fopen("datos.info","wb");
- int validos = 0;
- char mander = 's';
- if (bufferarchivo != NULL)
- {
- printf("todo ok\n");
- while (mander == 's')
- {
- Alumno aux = cargarAlumno();
- fwrite(&aux,sizeof(Alumno),1,bufferarchivo);
- validos++;
- printf("Desea seguir con los alumnos\n");
- fflush(stdin);
- scanf("%c",&mander);
- }
- }
- else
- {
- printf("error");
- }
- fclose(bufferarchivo);
- bufferarchivo = fopen("datos.info","rb");
- if (bufferarchivo!=NULL)
- {
- //podemos leerlo!
- Alumno unAlumno;
- //1-cargar a la variable del primer parametro (carga lo leido)
- //2-devolver la cant. bytes para saber si leyo o no
- //3-pasar el cursor a la siguiente "posicion"
- while (fread(&unAlumno,sizeof(Alumno),1,bufferarchivo)>0)
- {
- mostrarAlumno(unAlumno);
- }
- }
- fclose(bufferarchivo);
- }
- /*
- for (int i=0; i<validos; i++)
- {
- // mostrarAlumno(facultad[i]);
- // facultad[i].direccionAlumno.nombreCalle
- /*
- printf("edad %d\n",facultad[i].edad);
- for (int j=0;j<facultad[i].validos_notas;j++)
- {
- printf("edad %d\n",facultad[i].arreglo_notas[j]);
- }
- }
- */
- return 0;
- }
- void mostrarUnRegistro(char nombre[50],int pos)
- {
- int contador = contarRegistro(nombre);
- FILE * archi = fopen(nombre,"rb");
- Alumno unAlumno;
- if (archi !=NULL)
- {
- if (pos <= contador)
- {
- // 10 * 4 -> 40
- fseek(archi,sizeof(Alumno)*(pos-1),SEEK_SET);
- if (fread(&unAlumno,sizeof(Alumno),1,archi)>0)
- {
- mostrarAlumno(unAlumno);
- }
- }
- else
- {
- printf("no existe ese registro\n");
- }
- }
- fclose(archi);
- }
- int contarRegistro(char nombre[50])
- {
- int cantidad = 0;
- long tam = 0;
- FILE * archi = fopen(nombre,"rb");
- if (archi !=NULL)
- {
- fseek(archi,0,SEEK_END); //desde el final (SEEK_END) me desplazo 0
- tam = ftell(archi);//cant. bytes hasta el cursor
- cantidad = tam / sizeof(Alumno);
- //printf("la cantidad es %d",cantidad);
- }
- fclose(archi);
- return cantidad;
- }
- void mostrarAlumno(Alumno unAlumno)
- {
- printf("---Alumno---\n");
- printf("edad %d\n",unAlumno.edad);
- mostrarDireccion(unAlumno.direccionAlumno);
- mostrarArreglo(unAlumno.arreglo_notas,unAlumno.validos_notas);
- }
- void mostrarArreglo(int arreglo[50],int validos)
- {
- printf("---Notas---\n");
- for (int i=0; i<validos; i++)
- {
- printf("nota %d\n",arreglo[i]);
- }
- }
- Alumno cargarAlumno()
- {
- Alumno temp;
- printf("---Alumno---\n");
- printf("Ingrese edad del alumno\n");
- fflush(stdin);
- scanf("%d",&temp.edad);
- char izard = 's';
- int validos = 0;
- temp.direccionAlumno = cargarDireccion();
- printf("---Notas---\n");
- while (izard == 's')
- {
- printf("Ingrese nota\n");
- fflush(stdin);
- scanf("%d",&temp.arreglo_notas[validos]);
- validos++;
- printf("Desea seguir con las notas\n");
- fflush(stdin);
- scanf("%c",&izard);
- }
- temp.validos_notas = validos;
- return temp;
- }
- Direccion cargarDireccion()
- {
- Direccion unaDireccion;
- printf("---Direccion---\n");
- printf("Ingrese nombre de la calle\n");
- fflush(stdin);
- gets(unaDireccion.nombreCalle);
- return unaDireccion;
- }
- void mostrarDireccion(Direccion d)
- {
- printf("---Direccion---\n");
- printf("%s\n",d.nombreCalle);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement