PDA

View Full Version : [C] stampa matrice attraverso puntatore


Giupoz
13-12-2013, 19:08
Ragazzi ma è tutto corretto? Non capisco perchè non va... per voi ho tagliato le parti inutili, ho ridotto all'osso la funzione per evidenziare la dichiarazione della matrice, del puntatore e il prototipo... Forse sbaglio ad indicare l'imput? :cry:

void stampa_campo (int *campoPtr);
#define SIZE 24

int main ()
{
char campo[SIZE][SIZE] = {'-'}; //inizializzo tutti i caratteri della matrice col segno '-'
int *campoPtr;
campoPtr = &campo;
stampa_campo (&campo);
}


void stampa_campo (int *campoPtr)
{
int x = 0;
int y = 0;
int indice = 0;

while (indice < SIZE)
{
printf ("%3d", indice);
indice++;
}
puts ("");
while (x < SIZE)
{
while (y < SIZE)
{
printf ("%3c", campo[x][y]);
y++;
}
x++;
}
}

bancodeipugni
13-12-2013, 23:31
poi tra l'altro ho dei dubbi che si inizializzi in quella maniera li...

ma questa operazione: campoPtr = &campo;
a che serve ?:mbe:

in sostanza cosa dovrebbe fare sto programma esattamente ?

Giupoz
14-12-2013, 16:18
E' un gioco. Ho bisogno di richiamare una funzione nel main che mi stampi il campo (una matrice che viene modificata dall'utente).
La matrice viene modificata di continuo, volevo stamparla attraverso un puntatore, o mi conviene passare direttamente la matrice nella funzione?

uffa questi puntatori non li sto capendo molto :(

bancodeipugni
15-12-2013, 23:49
non è molto comodo passare un **pointer a una funzione

dato che ne determini già la dimensione forse è meglio che la dichiari statica globale ;)

ps: per inizializzarla usa memset

van9
17-12-2013, 15:54
Parti dai dati e dai tipi che ti interessano/servono - attiva i warnings al compilatore e prova

#include <stdio.h>
#define SIZE 24

int main ()
{
char campo[SIZE][SIZE] = { '-' }; /* ! */
size_t i, j;
i = 0;
j = 0;
while (i < SIZE) {
while (j < SIZE) {
if (campo[i][j] == '-')
printf("%3c", campo[i][j]);
else /* ! */
printf("%3c", '.');
j++;
}
puts("");
j = 0; /* ! */
i++;
}
return 0;
}


Scopri perché già solo questa parte non funzionava come pensavi e correggila, poi passa avanti.
Lavora in modo incrementale, non per tentativi.