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.