Subscripted value is neither array nor pointer

dem1509
Ciao a tutti. Cercando di eseguire questo programma il compilatore mi dà l'errore come da titolo. Qualcuno potrebbe spiegarmi perché?? Grazie!!!

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
minomic
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.