Oppure

Loading
29/05/10 21:01
domi90
l'esercizio chiede :una biblioteca memorizza i libri richiesti in lettura in un file in cui sono riportati nome e cognome del richiedente,autore e titolo del libro e il codice dell'argomento compreso fra 1 e 25.scrivere un programma che crei un tale file e memorizzi i dati relativi ad alcuni libri in prestito...(fino qua nessuna problema)..
poi chiede di creare una procedura che per ognuno dei 25 argomenti stampi la lista dei libri che sono stati richiesti e il loro numero totale
io la procedura la faccio cosi(posto solo le strutture e la procedura stessa)ma da problemi quando la uso..

struct biblio{
char nome[10];
char cognome[10];
char autore[20];
char titolo[20];
int codice;};
struct biblio per;
char*lista[25];
FILE*fp;
void arg(void){
int i,n;
fp=fopen("Biblioteca","r";);
for(;;){
n=fread(&per,sizeof(struct biblio),1,fp);
if(n==0){
fclose(fp);
break;}
else
strcpy(lista[per.codice],per.titolo);}

for(i=1;i<25;i++)
printf("Argomento %d=%s\n",i,lista[i]);
}
aaa
29/05/10 21:22
Dire che da' problemi non aiuta a risponderti.

E il codice va inserito tra i tag code altrimenti non si puo' leggere.
30/05/10 1:16
domi90
non da problemi in compilazione,semplicemente quando la chiamo dal main
aaa
30/05/10 7:43
Postato originariamente da domi90:

non da problemi in compilazione,semplicemente quando la chiamo dal main ...


... cosa succede?

Perchè si devono "strappare" le informazioni ?

In ogni caso, questa riga

char *lista[25];

secondo te, cosa fa?

Ultima modifica effettuata da 30/05/10 7:46
30/05/10 9:33
domi90
la mia idea era di copiare la stringa li dentro come richiede il testo del problema...l'ho gia detto che era sbagliata....cmq quando la chiamo blocca il programma....
aaa
30/05/10 9:36
Beh ... è ovvio perchè

char *lista[25];

è un vettore di 25 puntatori, non una stringa.
30/05/10 9:37
domi90
Postato originariamente da domi90:
é un array di 25 puntatori a carattere...
la mia idea era di copiare la stringa li dentro nella posizione dell'argomento come richiede il testo del problema.....cmq quando la chiamo blocca l'esecuzione del programma....
aaa
30/05/10 9:46
Postato originariamente da domi90:
é un array di 25 puntatori a carattere...


Non mi parte tu l'abbia mai scritto ...

Ma è proprio questo il problema. Quello è un array di 25 puntatori che non puntano a nulla. Se vuoi usare un array di puntatori, devi inizializzarli facendoli puntare ad una zona di memoria allocata con la malloc prima di usarli.