|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
|
[C] Matrice
Sono disperato, non riesco a capire cosa vuol dire l'errore che il compilatore mi riporta!!
Il programma è molto semplice costruisce una matrice leggendo dei dati da tastiera fino a quando non si preme EOF e poi li stampa. Nel seguito riporo sorgente ed errore. Un grazie a chi mi aiuterà. #include <stdio.h> #define COLONNE 20 #define RIGHE 100 int riempimento (char [][], int, int); void stampa (char [][], int); int main () { int lunghezza; char cognomi[RIGHE][COLONNE]; lunghezza = riempimento(cognomi, RIGHE, COLONNE); printf ("\n\n"); stampa(cognomi, lunghezza); printf ("\n\n"); return 0; } int riempimento (char cognomi[][], int righe, int colonne) { int i = 0, j = 0; for (; i < righe && cognomi[i-1][j] != EOF; i++); for (j = 0; j < colonne - 1 && (cognomi[i][j] = getchar()) != '\n'; j++); cognomi[i][j+1] = '\0'; return i; } void stampa (char cognomi[][], int max) { int i = 0, j = 0; for (; i < max; i++) for (j = 0; cognomi[i][j] != '\0'; j++) printf ("%c", cognomi[i]); } L'errore è il seguente: Cognomi.c: In function `riempimento': Cognomi.c:31: error: invalid use of array with unspecified bounds Cognomi.c:31: error: invalid use of array with unspecified bounds Cognomi.c:33: error: invalid use of array with unspecified bounds Cognomi.c:35: error: invalid use of array with unspecified bounds Cognomi.c: In function `stampa': Cognomi.c:47: error: invalid use of array with unspecified bounds Cognomi.c:49: error: invalid use of array with unspecified bounds Cognomi.c:51:2: warning: no newline at end of file [simone@localhost Programmazione in C]$ |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
|
l'errore sta nella dichiarazione dei prototipi delle funzioni e nella dichiarazione delle funzioni stesse. Cioe' quando dichiari vettori multidimensionali puoi omettere solo il numero di righe, ma devi specificare tutti gli altri (in questo devi specificare quante colonne).
Quindi non void stampa (char [][], int); ma void stampa(char [][COLONNE], int); e cosi' tutti gli altri. Questo perche' il numero di righe non e' importante, ma quello delle colonne si, perche' il programma deve sapere quanti elementi contiene una riga, poiche' tutti gli elementi sono posizionati consecutivamente in memoria, quindi se tu gli dice di accedere a matrice[1][0] questo deve sapere quanti elementi deve saltare (in questo caso un numero pari al numero di colonne) per restituirti l'elemento che vuoi...altrimenti non avrebbe altro modo per rintracciarlo. se vuoi puoi usare char *matrice[] oppure char **matrice. Scusa se sono stato poco chiaro ma e' una certa ora.... |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2005
Città: Torino
Messaggi: 144
|
Grazie mille sei stato chiarissimo. Ho risolto e sono riuscito a compilarlo. Ciao.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:31.



















