Qualcuno può spiegarmi questo esercizio nei dettagli?

di il
2 risposte

Qualcuno può spiegarmi questo esercizio nei dettagli?

//In particolare vorrei capire la ''funzione malloc''



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

struct elem{
char cod[5];
int imp;
struct elem *next;
};

struct elem *corrente;
struct elem *primo, * nuovo;
void inser(void);
void visual(void);
void sistema(void);


main()
{
int sc;
primo = NULL;

while (sc != 3)
{
printf("1-Inserimento struct alla catena\n2-Visualizzazione catena\n3-Uscita\n");
printf("Scegli un'operazione da eseguire\n");
scanf("%d", &sc);
switch (sc)
{
case 1:
inser();
system("cls");
break;

case 2:
visual();
getch();
system("cls");
break;

case 3:
system("cls");
printf("Uscita dal programma");
break;

default:
printf("Scelta errata\n");
getch();
system("cls");
}
}
}

void inser()
{
char mycod[5] = "\0";
int myimp = 0;

nuovo = malloc(sizeof (struct elem *));
if (nuovo != NULL)
{
printf("Inserisci un codice\n");
scanf("%s", mycod);
printf("Inserisci un importo\n");
scanf("%d", &myimp);

strcpy(nuovo->cod, mycod);
nuovo->imp = myimp;
nuovo->next = NULL;
sistema();
}
else
printf("Spazio in RAM insufficiente\n");
}

void sistema()
{
if (primo == NULL)
primo = nuovo;
else
{
corrente = primo;
while (corrente->next != NULL)
corrente = corrente->next;

corrente->next = nuovo;
}
}

void visual()
{
for (corrente = primo; corrente!= NULL; corrente = corrente->next)
printf("%s\t%d\n", corrente->cod, corrente->imp);
}

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte