Oppure

Loading
19/04/16 16:57
mariognai
Ciao ragazzi, sto sviluppando un programmino che gestisce l'archivio di una biblioteca.
Compilandolo, non mi sta dando nessun errore..ma quando vado ad eseguirlo mi crasha all'improvviso.
Sapete aiutarmi? Forse per ualche svista non riesco a trovare da solo il problema.. :rofl:

#include<stdlib.h>
#include<stdio.h>
#define MAXCHAR 100
#define MAXL 10000

int main(){
	typedef struct{
		int isbn;
		char autore[MAXCHAR];
		char titolo[MAXCHAR];
		bool prestato;
		
	}libro;
	
	libro biblioteca[MAXL];
	libro l;
	int scelta, nl, i;
	char p;
	
	do{
		printf("1. Registra libro.\n");
		printf("2. Riepilogo biblioteca.\n");
		printf("0. Fine.\n");
		
		printf("Scelta: ");
		scanf("%d", &scelta);
		
		fflush(stdin);
		system("cls");
		
		switch(scelta){
			case 1: printf("Quanti libri vuoi registrare? ");
					scanf("%d", &nl);
					
					for(i=0; i<nl; i++){
						printf("LIBRO N.%d\n\n", i+1);
						fflush(stdin);
						printf("Digita il Codice ISBN: ");
						scanf("%d", &biblioteca[i].isbn);
						fflush(stdin);
						printf("Digita l'autore: ");
						gets(biblioteca[i].autore);
						fflush(stdin);
						printf("Digita il titolo: ");
						gets(biblioteca[i].titolo);
						fflush(stdin);
						printf("Il seguente libro e' prestato? (s/n): ");
						scanf("%c", &p);
						fflush(stdin);
						
						system("cls");
					}
					
					system("pause");
					system("cls");
					break;
		}
	}while(scelta!=0);
	
	
	
	system("pause");
	return 0;
}
aaa
19/04/16 17:08
Mattia99
Prova a diminuire il valore di MAXL portandolo a 1000
aaa
19/04/16 17:09
mariognai
Grazie mille, funziona.. era partito uno 0 in più :k:
aaa
19/04/16 17:21
TheDarkJuster
Ma stiamo scherzando? Un topic dal titolo "perché crasha?" dove si chiede di trovare una ipotetica svista senza alcun indizio ne info di debug?

Questo se non viola il regolamento è quantomeno un comportamento infantile.

La prossima volta usi un debugger e come minimo dici in che punto si verifica l'errore.

Non è giusto che qualcuno faccia questo al posto tua per tua negligenza. Questo a prescindere dalla complessità del programma.
aaa
19/04/16 19:37
Occhio che il vettore

libro biblioteca[MAXL];

viene allocato nello stack. Lo spazio per quest'ultimo è limitato e tentare di allocare troppo spazio causa un crash.

Alloca lo spazio dinamicamente (se hai bisogno di tanti elementi), con la malloc.
20/04/16 4:44
pierotofy
Postato originariamente da TheDarkJuster:
Questo se non viola il regolamento è quantomeno un comportamento infantile.

La prossima volta usi un debugger e come minimo dici in che punto si verifica l'errore.

Non è giusto che qualcuno faccia questo al posto tua per tua negligenza. Questo a prescindere dalla complessità del programma.


Forse il nostro utente non ha ancora familiarità con i debugger, no? E poi sono ~50 righe di codice... per questa volta lasciamo andare.

Oltre a questo, cerchiamo tutti di tenere un comportamento e un linguaggio rispettoso.
Il mio blog: piero.dev
20/04/16 6:28
TheDarkJuster
Ho visto che non affatto difficile però è abbastanza riprovevole ugualmente.
Mi scuso per essere stato troppo duro.
Scriverò un breve artico su come fare il debug perché questo non accada mai più.
aaa
20/04/16 6:36
Template
Postato originariamente da TheDarkJuster:
Scriverò un breve artico su come fare il debug perché questo non accada mai più.


Buona idea: si tratta di un argomento che molti (soprattutto neofiti ed autodidatti) spesso sottovalutano :k:
aaa