Che stupido mi ero dimenticato la cosa più importante (&) comunque ho apportato le modifiche che mi hai suggerito ma compilando il programma mi porta 3 warning. Dice che devo usare i puntatori per autore editore e categoria.
Ti allego codice e warning.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 5
typedef struct libro
{
char autore[50];
char editore[60];
char categoria[10];
int anno;
float prezzo;
} libro;
int main(void)
{
int cont1;
int cont2;
libro raccolta[MAX];
for(cont1=0;cont1<MAX;cont1++)
{
printf("Inserisci l'autore del libro:\n");
scanf("%s",&raccolta[cont1].autore);
printf("Inserisci l'editore del libro:\n");
scanf("%s",&raccolta[cont1].editore);
printf("Inserisci la categoria del libro:\n");
scanf("%s",&raccolta[cont1].categoria);
printf("Inserisci l'anno di pubblicazione del libro:\n");
scanf("%d",&raccolta[cont1].anno);
printf("Inserisci il prezzo del libro:\n");
scanf("%f",&raccolta[cont1].prezzo);
}
for(cont2=0;cont2<MAX;cont2++){
printf("L'autore del %d° libro è:%s\n",cont2,raccolta[cont2].autore);
printf("L'editore del %d° libro è:%s\n",cont2,raccolta[cont1].editore);
printf("La categoria del %d° libro è:%s\n",cont2,raccolta[cont1].categoria);
printf("L'anno di pubblicazione del %d° libro è:%d\n",cont2,raccolta[cont1].anno);
printf("Il prezzo del %d° libro è:%f\n",cont2,raccolta[cont1].prezzo);
}
return 0;
}
WARNING:
Programma23.c: In function ‘main’:
Programma23.c:23:10: warning: format ‘%s’ expects argument of type ‘char ’, but argument 2 has type ‘char ()[50]’ [-Wformat=]
scanf("%s",&raccolta[cont1].autore);
^ ~~~~~~~~
Programma23.c:25:10: warning: format ‘%s’ expects argument of type ‘char ’, but argument 2 has type ‘char ()[60]’ [-Wformat=]
scanf("%s",&raccolta[cont1].editore);
^ ~~~~~~~~~
Programma23.c:27:10: warning: format ‘%s’ expects argument of type ‘char ’, but argument 2 has type ‘char ()[10]’ [-Wformat=]
scanf("%s",&raccolta[cont1].categoria);