Salve! sono nuova e chiedo venia se commetto qualche errore!
Comunque fatto sta che per il mio esame di c devo capire esattamente gli errori che commetto, ergo vi posto un programma che ho sviluppato.
In poche parole, ho due file contenenti informazioni riguardo studenti e esami relativi. devo fare tre query : una che mi stampi uno studente con i suo esami, una che mi aggiunga il voto di un esame, e l'ultima ,che non ho ancora implementato ,che modifica un voto esistente.
Non capisco perche' il programma mi si blocchi alla console, nonostante la compilazione vada a buon fine. Io uso DEVC++ per programmare.
Grazie in anticipo
sterins
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int matricola;
char nome;
char cognome;
char data;
} studente;
typedef struct{
int matri;
int tri;
char modo;
char materia;
int voto;
} libretto;
void aggiungivoto(char *file);
void modifcavoto(char *file);
void cercastampa(char *file, char *file1);
int main(){
//cercastampa("C:\\Users\\ester\\Desktop\\studente.t xt","C:\\Users\\ester\\Desktop\\libretto.txt" );
aggiungivoto("C:\\Users\\ester\\Desktop\\libretto. txt");
}
void cercastampa(char *file, char *file1){
studente stu[50];
libretto lib[50];
int i=0,j=0;
int x;
FILE *fl;
FILE *fp;
fl=fopen("C:\\Users\\ester\\Desktop\\studente.txt" , "r+");
fp=fopen("C:\\Users\\ester\\Desktop\\libretto.txt" , "r+");
printf("inserisci la matricola dello studente:\n\n");
scanf("%d", &x);
if(fl){
while (!feof(fl)){
fscanf(fl,"%d", "%s","%s","%s" ,&stu[i].matricola,&stu[i].nome,&stu[i].cognome,&stu[i].data);
}
}
if(fp){
while (!feof(fp)){
fscanf(fp,"%d","%d", "%s","%s","%d", &lib[j].matri,&lib[j].tri,&lib[j].modo,&lib[j].materia,&lib[j].voto);
}
}
int card1= int(sizeof(stu)/sizeof(stu[0]));
int card2= int(sizeof(lib)/sizeof(lib[0]));
int trovato =0;
int k=0;
for(;k<card1;k++){
if(x==stu[k].matricola){
trovato=1;
printf("lo studente e' presente negli archivi\n\n");
printf("nome: %s\n\n cognome: %s\n\n matricola: %d ", stu[k].nome, stu[k].cognome, stu[k].matricola);
}
}
if(!trovato){
printf("non e' presente lo studente\n\n");
system("pause");
}
int z=0;
int stampa=0;
if(trovato){
for(;z<card2;z++){
if((lib[j].matri)==x){
stampa=1;
printf("esame: %d\n\n %s\n\n %s\n\n %d\n\n", lib[i].tri, lib[i].modo, lib[i].materia, lib[i].voto );
system("pause");
}
}
}
if(!stampa){
printf("non abbiamo esami per questo studente\n\n");
system("pause");
}
else
{
printf("errore apertura file");
}
fclose(fl);
fclose(fp);
}
void aggiungivoto(char *file){
FILE *fp;
libretto libri;
int i,m,v, matr,t;
char mo, ma;
fp=fopen("C:\\Users\\ester\\Desktop\\libretto.txt" ,"a+");
printf("immetti la matricola\n");
scanf("%d", &m);
if(fp){
fscanf(fp,"%d",&matr);
if(matr==m){
printf("che trimestre\n");
scanf("%d", &t);
printf("scritto o orale?\n");
scanf("%s", &mo);
printf("che materia\n");
scanf("%s", &ma);
printf("inserisci voto\n");
scanf("%d", &v);
fprintf(fp,"%d","%s","%s","%d", t,mo,ma,v);
system("pause");
}
else
{
printf("errore");
system("pause");
}
}
else
{
printf("errore");
system("pause");
}
}