Siccome devo leggere dei dati da un file ed inserirli in una matrice pensavo di utilizzare l'allocazione della memoria. Vedendo alcuni esempi ho scritto il seguente file(se ci sno altri tipi errori è perche ho fatto un taglio qua e la per mettere solo il succo visto che con le dimensioni fisse il tutto gira)
Codice:
#include <stdio.h>
#include <stdlib.h>
#define stringa "OUTPUT.DAT"
int legge(int lung, double t[],double X[],double Y[],double Z[],double TT[],double W[],double B[])
{
FILE *fp;
int i=0;
printf("Quanti secondi di acquisizione");
if((fp=fopen(stringa,"r"))==NULL)
printf("Impossibile aprire il file");
else
{
printf("Dati letti:\n");
while(fscanf(fp,"%LE %LE %LE %LE %LE %LE %LE",&t[i],&X[i],&Y[i],&Z[i],&TT[i],&W[i],&B)>0)
{
printf(".");
i++;
if(i>lung)
{
printf("\n");
break;
}
}
}
fclose(fp);
return i;
}
int main(void)
{
double *time;
double *MAT1, *MAT2, *MAT3;
double *MAT4, *MAT5, *MAT6;
int j,t;
int tacq;
printf("Quanti secondi di acquisizione: ");
scanf("%d",&tacq);
t=tacq%fsamp;
time=malloc(t*sizeof(double));
MAT1=malloc(t*sizeof(double));
MAT2=malloc(t*sizeof(double));
MAT3=malloc(t*sizeof(double));
MAT4=malloc(t*sizeof(double));
MAT5=malloc(t*sizeof(double));
MAT6=malloc(t*sizeof(double));
if(time==NULL || MAT1==NULL || MAT2==NULL || MAT3==NULL || MAT4==NULL || MAT5==NULL || MAT6==NULL)
{
printf("Memoria esaurita\n");
exit(1);
}
j=legge(time,MAT1,MAT2,MAT3,MAT4,MAT5);
for(t=0;t<j;t++)
printf("time= %LE\tX= %LE\tW= %LE\n",time[t],MAT1[t],MAT3[t]);
system("PAUSE");
return 0;
}
Quando lo lancio ottengo il seguente errore relativo alle righe dove utilizzo la funzione malloc
Codice:
c:\main.cpp(67) : error C2440: '=' : cannot convert from 'void *' to 'double *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Se invece faccio
Codice:
VEDERE=(double *)malloc(10*sizeof(double));
come ho visto fare per un esempio "anacolo" mi da altri tipi di errore.
Grazie a tutti per un aiutino intanto cerco in rete altri esempi.
grazie