Ciao!
Ho un problema che non riesco a risolvere.
Ho un vettore di n*m valori (che io in realta' non conosco a priori e devo cacolarli osservando il vettore) e vorrei creare una matrice nxm. La prima riga della matrice deve contenere i primi m valori del vettore e così via, fino a creare n righe.
Supponendo che il mio vettore è "Hello world!", ovvero 12 caratteri, considero n=4 e m=3.
Il codice che ho scritto è:
#include <stdio.h>
#include <stdlib.h>
#define kLunghezzaMaxStringa 100000
#define fin "input.txt"
int main (void);
int LeggiDaFile(void);
int Seleziona(void);
char *vettore; // non definisco la dimensione perchè nel mio caso non è a priori nota
char **matrice;
int n=4;
int m=3;
int main (void){
LeggiDaFile();
Seleziona();
return(0);
}
int LeggiDaFile(void) { // il file input.txt contiene "Hello world!"
FILE *ingresso;
ingresso=fopen(fin,"r");
vettore=calloc(kLunghezzaMaxStringa,sizeof(char));
fread(vettore, 1, kLunghezzaMaxStringa, ingresso);
fclose(ingresso);
return(0);
}
int Seleziona(void){
int i;
int j=0;
int k=0;
int dim=n*m;
matrice=calloc(kLunghezzaMaxStringa,sizeof(char));
for(i=0;i<dim;i++){
matrice[j][k]=vettore[i];
k++;
if (k == m) {
j++;
k=0;
}
}
return(0);
}
Sapreste dirmi dove sta il problema?
Grazie tante!
Chiara