Jack-Carter
26-06-2008, 16:20
Salve a tutti, ho un problema con l'allocazione dinamica di una matrice:
#include <stdio.h>
#include <stdlib.h>
int readf(char **m);
int r, c;
int main()
{
char **s;
int i, j;
readf(s);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%c", s[i][j]);
}
printf("\n");
}
return 0;
}
questo è il mio main, ho dichiarato s come puntatore a puntatore a char, e nella funzione readf leggo da un file una griglia. Il problema è che quando esco dalla funzione, il pezzo di codice nel main che prova a leggere s, da un errore della memoria. Ecco la funzione:
int readf(char **m)
{
FILE *input;
char ch;
int i, j, k;
input=fopen("campo.txt", "r");
fscanf(input, "%d %d", &r, &c);
m=malloc(r*sizeof(char*));
for(i=0;i<r;i++)
{
m[i]=malloc(c*sizeof(char));
for(j=0;j<c;j++)
{
fscanf(input, "%c", &m[i][j]);
printf("%c", m[i][j]);
}
fscanf(input, "%c", &ch);
printf("%c", ch);
}
return 0;
}
Ho provato a mettere degli asterischi davanti a m nell'allocazione, ma ha solo peggiorato le cose.
Mi potreste dire dove sbaglio? Grazie.
#include <stdio.h>
#include <stdlib.h>
int readf(char **m);
int r, c;
int main()
{
char **s;
int i, j;
readf(s);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%c", s[i][j]);
}
printf("\n");
}
return 0;
}
questo è il mio main, ho dichiarato s come puntatore a puntatore a char, e nella funzione readf leggo da un file una griglia. Il problema è che quando esco dalla funzione, il pezzo di codice nel main che prova a leggere s, da un errore della memoria. Ecco la funzione:
int readf(char **m)
{
FILE *input;
char ch;
int i, j, k;
input=fopen("campo.txt", "r");
fscanf(input, "%d %d", &r, &c);
m=malloc(r*sizeof(char*));
for(i=0;i<r;i++)
{
m[i]=malloc(c*sizeof(char));
for(j=0;j<c;j++)
{
fscanf(input, "%c", &m[i][j]);
printf("%c", m[i][j]);
}
fscanf(input, "%c", &ch);
printf("%c", ch);
}
return 0;
}
Ho provato a mettere degli asterischi davanti a m nell'allocazione, ma ha solo peggiorato le cose.
Mi potreste dire dove sbaglio? Grazie.