Linuxtrent: Ancora C

  • From: Daniele Nicolodi <daniele@xxxxxxxxxx>
  • To: linuxtrent <linuxtrent@xxxxxxxxxxxxxxxxx>
  • Date: Sun, 4 Nov 2001 19:50:41 +0100

Qualcuno puo` esprimere giudizi su un pezzettino di codice che ho scritto ??
Eccolo:

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

struct esame {
        char * nome;
        char * cognome;
        char * matricola;
        char * corso;
        int voto;
};

void esame_print(struct esame * e)
{
        printf("-------------------------------------\n");
        printf("   Alunno: %s %s\n", e->cognome, e->nome);
        printf("Matricola: %s\n", e->matricola);
        printf("    Corso: %s\n", e->corso);
        printf("     Voto: %d\n", e->voto);
}

struct esame * esame_new()
{
        struct esame * e;

        e = (struct esame *)malloc(sizeof(struct esame));

        if (e == NULL)
                return NULL;

        e->nome = NULL;
        e->cognome = NULL;
        e->matricola = NULL;
        e->corso = NULL;
        e->voto = 0;

        return e;
}

void esame_delete(struct esame * e)
{
        if (e != NULL) {
                if (e->nome != NULL)
                        free(e->nome);
                if (e->cognome != NULL)
                        free(e->cognome);
                if (e->matricola != NULL)
                        free(e->matricola);
                if (e->corso != NULL)
                        free(e->corso);
                free(e);
        }
}

void esame_fill(struct esame * e, 
                char * nome, char * cognome, char * matricola, 
                char * corso , int voto)
{
        e->nome = (char *)malloc(strlen(nome)+1);
        e->cognome = (char *)malloc(strlen(cognome)+1);
        e->matricola = (char *)malloc(strlen(matricola)+1);
        e->corso = (char *)malloc(strlen(corso)+1);

        strcpy(e->nome, nome);
        strcpy(e->cognome, cognome);
        strcpy(e->matricola, matricola);
        strcpy(e->corso, corso);

        e->voto = voto;
}

int main()
{
        struct esame * esame[3];

        int i;
        
        for (i = 0; i < 3; i++) {
                esame[i] = esame_new();
                if (esame[i] == NULL) {
                        fprintf(stderr, "error in esame_new()\n");
                        exit(1);
                }

                esame_fill(esame[i], 
                           "Daniele", "Nicolodi", "4qb", 
                           "Analisi Matematica 1 ud", 27);
        }

        esame_fill(esame[1],
                   "Elisa", "Frasnelli", "2qb",
                   "Analisi Matematica 1 ud", 30);

        for (i = 0; i < 3; i++) {
                esame_print(esame[i]);
        }

        for (i = 0; i < 3; i++) {
                esame_delete(esame[i]);
        }
}

Ciao && Grazie
-- 
Daniele
                    --- http://www.grinta.net ---
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts:

  • » Linuxtrent: Ancora C