Linguaggio predefinito C, programma che uso DevC++.
Sto sviluppando un nuovo esercizio che chiede i seguenti punti:
1. L'autore deve far stampare a schermo il proprio nome e cognome che devono essere conservati in opportuni campi di una struttura;
2. Caricare in RAM tutte le eventuali informazioni già presenti in un file prefissato (pagelle.txt);
3. Inserire un nuovo studente nell'elenco inserendo nome, cognome, classe e voti ottenuti in pagella (codificati con unsigned int) (Le materie sono: italiano, matematica, informatica, religione);
4. Visualizza a schermo tutti gli elementi presenti nell'elenco;
5. Cerca studente per cognome (richiedere il cognome, cercare il cognome nel menù, stampare a schermo i dati di tutti gli studenti con quel cognome;
6. Salvare una pagella su un file (richiedere cognome dello studente, visualizza a schermo i risultati, salvare su un file con nome a piacere).
Ho già sviluppato il 1° e 3° punto, riesco a compilare, il programma parte, ma dopo che ho inserito nome, cognome, classe es i voti, non mi salva i dati nel file ed il programma si blocca.
Ecco il codice:
Cos'è che non va?codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CHARS 50 #define MAX_ELEM 100 #define FILE_PRED "pagelle.txt" struct studente { char nome [MAX_CHARS]; char cognome [MAX_CHARS]; } io={"Pinco","Pallino"}; struct pagelle { char nome [MAX_CHARS]; char cognome [MAX_CHARS]; char classe [MAX_CHARS]; int italiano [2]; int matematica [2]; int informatica [2]; int religione [2]; }; //PROTOTIPI int inserisci (struct pagelle elenco_pagelle[], int n); int main(int argc, char *argv[]) // Inizio programma { struct pagelle elenco_pagelle [MAX_ELEM]; printf("\nAutore del programma:"); //Stampa i dati dell'autore printf("\n-------------------------"); printf("\n Nome: %s\n Cognome: %s",io.nome,io.cognome); printf("\n-------------------------"); int n=0; int scelta; do { printf("\n Seleziona cio' che desideri fare:"); printf("\n 1. Inserisci nuovo studente"); printf("\n 2. "); printf("\n 3. "); printf("\n 4. "); printf("\n 0. Esci"); printf("\n\nScegli: "); scanf("%d",&scelta); switch (scelta) { case 1: { n=inserisci (elenco_pagelle,n); break; } case 0: { exit(0); break; } } } while(scelta!=0); system("pause"); return 0; } int inserisci (struct pagelle elenco_pagelle[], int n) { if(n>MAX_ELEM) { printf("Non puoi aggiungere altri studenti\n"); system("pause"); return n; } printf("\nNon iserire spazi e/o lettera accentate\n"); printf("\nInserisci nome: "); scanf("%s",elenco_pagelle[n].nome); printf("\nInserisci cognome: "); scanf("%s",elenco_pagelle[n].cognome); printf("\nInserisci classe: "); scanf("%s",elenco_pagelle[n].classe); printf("\nInserisci voto italiano: "); scanf("%u",elenco_pagelle[n].italiano); printf("\nInserisci voto matematica: "); scanf("%u",elenco_pagelle[n].matematica); printf("\nInserisci voto informatica: "); scanf("%u",elenco_pagelle[n].informatica); printf("\nInserisci voto religione: "); scanf("%u",elenco_pagelle[n].religione); printf("\n\n"); FILE*fp=fopen(FILE_PRED,"a"); if(fp==NULL) { printf("Impossibile salvare!\n"); } else { fprintf(fp,"%s %s %s %u %u %u %u",elenco_pagelle[n].nome,elenco_pagelle[n].cognome,elenco_pagelle[n].classe,elenco_pagelle[n].italiano,elenco_pagelle[n].matematica,elenco_pagelle[n].informatica,elenco_pagelle[n].religione); printf("------------SALVATO------------\n\n"); fclose(fp); } return n; }
Per il numero 2 dell'esercizio non so come devo fare. Se potete dirmi come fare bene, ma prima bisogna risolvere il problema dell'inserimento di un nuovo studente.

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando 
						
 
						
