Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include "getnum.h"
- #define MAX_STRING 30
- #define BLOCK 5
- #define NEW_LINE { putchar('\n'); }
- #define CLEAN_BUFFER { while(getchar()!='\n'); }
- typedef struct
- {
- unsigned int legajo;
- char nombre[MAX_STRING];
- char apellido[MAX_STRING];
- }Talumno;
- Talumno ** leerAlumnos(void);
- void imprimeAlumnos(Talumno ** vec);
- void liberaAlumnos(Talumno ** vec);
- Talumno unAlumno(void);
- int
- main(void)
- {
- Talumno ** alumnos;
- alumnos = leerAlumnos();
- imprimeAlumnos(alumnos);
- liberaAlumnos(alumnos);
- return 0;
- }
- Talumno**
- leerAlumnos(void)
- {
- int i = 0;
- Talumno ** resp = NULL;
- Talumno ** aux;
- do
- {
- if (i%BLOCK==0)
- {
- if (NULL == (aux = realloc(resp, sizeof(*resp)*(i+BLOCK))))
- {
- free(aux);
- return NULL;
- }
- else
- {
- resp = aux;
- }
- }
- if(NULL == (resp[i] = malloc(sizeof(**resp))))
- {
- free(resp);
- return NULL;
- }
- else
- {
- *resp[i] = unAlumno();
- }
- }
- while (resp[i++]->legajo != 0);
- resp[i]->nombre[0] = 0;
- resp[i]->apellido[0] = 0;
- resp = realloc(resp, i*sizeof(*resp));
- return resp;
- }
- void
- imprimeAlumnos(Talumno ** vec)
- {
- int i;
- for (i = 0; vec[i]->legajo != 0; i++)
- {
- printf("Legajo: %d\n", vec[i]->legajo);
- printf("Nombre: %s\n", vec[i]->nombre);
- printf("Apellido: %s\n", vec[i]->apellido);
- putchar('\n');
- }
- }
- void
- liberaAlumnos(Talumno ** vec)
- {
- int i = 0;
- for (i = 0; vec[i]->legajo != '\0'; i++)
- {
- free(vec[i]);
- }
- free(vec);
- }
- Talumno
- unAlumno(void)
- {
- Talumno alumno;
- do
- {
- alumno.legajo = getint("Ingrese el numero de legajo: ");
- }
- while (alumno.legajo < 0);
- NEW_LINE
- if(alumno.legajo != 0)
- {
- printf("Ingrese su nombre: ");
- scanf("%s", (alumno.nombre));
- CLEAN_BUFFER
- NEW_LINE
- printf("Ingrese su apellido: ");
- scanf("%s", (alumno.apellido));
- CLEAN_BUFFER
- }
- return alumno;
- }
Add Comment
Please, Sign In to add comment