salve ragazzi ho pensato che una possibile soluzione al problema della stampa di tutti i dati anagrafici dei ragazzi di una classe la si potesse risolvere con una lista(argomento non trattato ancora all'uni) ma qualcosina mi sfugge ancora vi posto il sorgente credo sia la miglior soluzione perché non mi vincolerebbe in nessuna maniera dal farla crescere in maniera vertiginosa ecco tutto per voi:
buon divertimento!!
PHP Code:
#include <st***.h>
#include <string.h>
#include <stdlib.h>
struct studenti
{ char *nome;
char *cognome;
char matricola[15];
struct studenti*next;
};
void stampa(struct studenti*);
void inserisci(struct studenti*);
int main()
{ int scelta;
struct studenti *alunni ;
alunni=(struct studenti*)malloc(sizeof(struct studenti));
alunni->next=NULL;
do{
printf(" _________________________\n");
printf("|1: inserisci i dati------|\n");
printf("|2: stampa----------------|\n");
printf("|3: exit------------------|\n");
printf("|-------------------------|\n");
scanf("%d",&scelta);
if(scelta==1)
{
inserisci(alunni);
}
if(scelta==2)
{
stampa(alunni);
}
}while(scelta!=3);
alunni=NULL;
return 0;
}
void inserisci(struct studenti *alunno)
{
char *nome,*cognome,*matricola;
cognome=nome=matricola=(char*)malloc(4);
while(alunno->next!=NULL){
alunno=alunno->next; // vado avanti nella lista fino a che non trovo l'ultimo
}
printf("inserisci un nome\n");
scanf("%s",nome);
alunno->nome=(char*)malloc(strlen(nome+1)*sizeof(char*));// prendo memoria lo stretto indispensabile
strcpy(alunno->nome,nome);// copia del dato nella struttura
printf("inserisci il cognome\n");
scanf("%s",cognome);
alunno->cognome=(char*)malloc(strlen(cognome+1)*sizeof(char*));
strcpy(alunno->cognome,cognome);
printf("inserisci la matricola\n");
scanf("%s",matricola);
alunno->matricola[0]=*(char*)malloc(strlen(matricola+1)*sizeof(char*));
strcpy(alunno->matricola,matricola);
}
void stampa(struct studenti *alunno){
while(alunno->next!=NULL){ // scorro fino all'ultimo elemento e mentre lo faccio stampo
printf("_________________________________\n");
puts(alunno->nome);
puts(alunno->cognome);
puts(alunno->matricola);
printf("_________________________________\n");
alunno=alunno->next;
}
}
Comment