Perchè?
Questo è un "pezzo" di programma che fa parte di un programma più grande.
Con il compilatore Dev-C++ ho notato che se inserisco come genere un numero maggiore o eguale a otto il programma si blocca.
Sapreste dirmi il perchè di questa anomalia?
Con il compilatore Dev-C++ ho notato che se inserisco come genere un numero maggiore o eguale a otto il programma si blocca.
Sapreste dirmi il perchè di questa anomalia?
#include <stdio.h> #include <stdlib.h> typedef struct{ char titolo[50],autore[40]; int collocazione,copie,genere; }libro; void leggi(libro *x); void inserimento(libro *lb[5],int *N);//Passando l'intera tabella chiederemo nella funzione il libro da inserire attraverso la leggi void visualizza(libro *R,int n);//Passando la riga,chiederemo nel main il genere(che altro non è che la riga!) void menu(); main(){ libro *lb[5]; int N[5],scelta,genere; for(genere=0;genere<5;genere++){ lb[genere]=NULL; N[genere]=0; } do{ menu(); scanf("%d",&scelta); switch(scelta){ case 1:inserimento(lb,N); break; case 2:printf("Genere: "); scanf("%d",&genere); visualizza(lb[genere],N[genere]); break; case 0:printf("\n Fine!\n"); break; default:printf("\n Tasto non valido!\n"); break; } }while(scelta!=0); for(genere=0;genere<5;genere++) free(lb[genere]); system("PAUSE"); return 0; } void inserimento(libro *lb[5],int *N) { libro l,*aux; leggi(&l); aux=realloc(lb[l.genere],sizeof(libro)*(N[l.genere]+1)); if(aux==NULL) return; lb[l.genere]=aux; lb[l.genere][N[l.genere]]=l; N[l.genere]++; } void visualizza(libro *R,int n) { int i; for(i=0;i<n;i++){ printf("Titolo: %s\n",R[i].titolo); printf("Autore: %s\n",R[i].autore); printf("Collocazione: %d\n",R[i].collocazione); printf("Copie: %d\n",R[i].genere); } } void leggi(libro *x) { printf("Titolo:\n"); scanf("%s",(*x).titolo); printf("Autore:\n"); scanf("%s",(*x).autore); printf("Collocazione:\n"); scanf("%d",&(*x).collocazione); printf("Copie\n"); scanf("%d",&(*x).copie); printf("Genere:\n"); scanf("%d",&(*x).genere); } void menu() { printf("\n MENU PRINCIPALE\n\n"); printf("Premi: 1 per inserire un nuovo libro, 2 per visualizzare la tabella, 0 per terminare\n\n\n"); }
Risposte
Ma genere non deve essere maggiore di 4... lb[genere] e N[genere] non esistono se genere è maggiore di 4...
Mi stupisco che funzioni per $4<$genere$<=8$
Mi stupisco che funzioni per $4<$genere$<=8$
"vict85":
Ma genere non deve essere maggiore di 4... lb[genere] e N[genere] non esistono se genere è maggiore di 4...
Mi stupisco che funzioni per $4<$genere$<=8$
Che sbadato!
Hai ragione!!!
grazie