PDA

Visualizza la versione completa : [C] Matrice di stringhe


cleverboy
21-10-2005, 20:08
Salve. Sono mezzo programmatore ma stavolta proprio non mi viene in mente perché non riesca a farlo funzionare....


Devo realizzare una matrice Nx3 di stringhe (non posso utilizzare classi o strutture) ma non mi riesce di cavarci un ragnetto dal buco! Il codice è questo (circa):


#define N 10;
...
...
char *M[N][3];
int i;
...
...
for (i=0;i<N;i++)
{
printf("campo 1:" );
scanf("%s",&M[i][0]);
printf("campo 2:" );
scanf("%s",&M[i][1]);
printf("campo 3:" );
scanf("%s",&M[i][2]);
}

for (i=0;i<N;i++)
{
printf("CAMPO 1: %s\n", M[i][1]);
printf("CAMPO 2: %s\n", M[i][2]);
printf("CAMPO 3: %s\n", M[i][3]);
}
...


Il compilatore compila, ma quando arriva a stampare a video la matrice si inchioda. Se al posto di %s metto %d allora stampa (dei numeri ovviamente, ma non si inchioda).

A voi l'ardua sentenza :messner:

anx721
21-10-2005, 21:08
prima di fare la scanf devi allocare lo spazio per la stringa:

M[i][0] = (char *)malloc(30 * sizeof(char));

se lel stringhe sono al più lunghe 29 caratteri


inoltre la scanf va fatta cosi:

scanf("%s",M[i][0]);

senza la & perchè M[i][0] è già un puntatore a carattere.

poi dal modo in cui hai mpostatato il programma mi vie da pensare che non ti serve una matrice di stringhe ma un array di 3 stringhe, è cosi?

cleverboy
22-10-2005, 20:19
Speravo di fare senza malloc, il programma serve da esempio per una ragazza cui faccio ripetizioni e non ha ancora fatto molto di C/C++. Pazienza.

In merito alla tua domanda, no, mi serve proprio una matrice Nx3, ove allocare una serie di record composti di 3 campi... so che si fa meglio con le strutture (classi) ma non ha mai visto nulla di simile e volevo vedere se si poteva fare senza troppe complicazioni.

Grazie lo stesso

Loading