Subscripted value is neither array nor pointer
Ciao a tutti. Cercando di eseguire questo programma il compilatore mi dà l'errore come da titolo. Qualcuno potrebbe spiegarmi perché?? Grazie!!!
L'errore viene segnalato per la riga del printf e di quella precedente.
struct stazione { char codice[16]; char luogo[32]; char provincia[3]; int quota; }; struct data { int giorno; int mese; int anno; }; struct ora { int ore; int minuti; }; struct rilevamento { char cod[16]; struct data d; struct ora o; float temperatura; int precipitazioni; }; int lettura_rilevamenti (FILE *frilevamenti, struct rilevamento tabella_rilevamenti[]); void estrai_ril (struct rilevamento tabella_rilevamenti[], char riga[], int numero_consecutivo); int lettura_fstazioni (FILE *fstazioni, struct stazione tabella_stazioni[]); float calcola_media (struct rilevamento tabella_rilevamenti[], struct stazione tabella_stazioni[], int anno, char provincia[], int numero_stazioni, int numero_rilevamenti); int main(int argc, char *argv[]) { FILE *frilevamenti; FILE *fstazioni; int anno; int nr_rilevamenti; int nr_stazioni; struct rilevamento tabella_rilevamenti[MAXRILEVAMENTI]; struct stazione tabella_stazioni[MAXSTAZIONI]; float temp_media; if (argc != 5) { printf ("Uso: meteo <file_rilevamenti> <file_stazioni> <anno> <provincia>\n"); exit (EXIT_FAILURE); } if ((frilevamenti = fopen(argv[1], "r")) == NULL) { printf ("Errore apertura file rilevamenti\n"); exit (EXIT_FAILURE); } if ((fstazioni = fopen (argv[2], "r")) == NULL) { printf ("Errore apertura file stazioni\n"); exit (EXIT_FAILURE); } anno = atoi(argv[3]); nr_rilevamenti = lettura_frilevamenti(frilevamenti, tabella_rilevamenti); nr_stazioni = lettura_fstazioni(fstazioni, tabella_stazioni); temp_media = calcola_media(tabella_rilevamenti, tabella_stazioni, anno, argc[4], nr_stazioni, nr_rilevamenti); printf ("La temperatura media nell'anno %d nella provincia %s è stata %f\n", anno, argc[4], temp_media); return EXIT_SUCCESS; }
L'errore viene segnalato per la riga del printf e di quella precedente.
Risposte
Forse intendevi argv[4] e non argc[4]. Infatti argc non è nè un array nè un puntatore, da cui l'errore che ti segnala il compilatore.