imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005
-
14 oct. 2005 à 13:16
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010
-
16 oct. 2005 à 12:47
Bonjour,
je cherche l'equivalent de fseek en c++, j'ai utilise la fonction suivante:
vecteur* RegionApprox:: readvecteur(char *fichier,int *taille)
{
int cp=0;
float val1,cst=1600/(4*d);
ifstream Al;
vecteur *data;
data=new vecteur[cst];
Al.open(fichier);
//fseek(Al,*taille*4*d-1,0);?????
while ((Al )&& (cp<cst))
{
for(int i=0;i<d;i++)
{
Al>>val1;
data[cp].coord[i]=val1;
}
cp++;
}
(*taille)=cp-1;
if(!Al) *taille=-1;
Al.close();
return data;
}
comment je peux l'utiliser dans cette fonction .
Merci d'avance
imanedaoudi
Messages postés82Date d'inscriptionvendredi 20 mai 2005StatutMembreDernière intervention24 octobre 2005 16 oct. 2005 à 11:55
oui c ca merci, mais j'utilise le fichier txt qui contient les donnés suivante:
44.4 22.1993 21.9798 58.44 32.34 55.34 567. 45 12 56 45.56 45.56 76.45...
pour lire le n*10eme element j'ai utiliser le bout du code:
void vecteur::readvecteur(char *fich,int i)
{
ifstream Al;
float val;
Al.open(fich);
Al.seekg((10*i*4),ios::beg);
Al>>val;
cout<<val<<" ";
}
for(int i=0;i<N;i++)
{
readvecteur(fich,int i);
}
je recupére des valeurs tronqué par rapports aus valeurs du fichier par exemple:2.5 au lieu de 12.5
quelqu'un peut me dire pourqoi?
Merci
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010 16 oct. 2005 à 12:47
tu lis des données dans un fichier texte. les fottant sont enregistrer
en caratères. étant données que la taille des nombres soient variables
( ex: 44.4 : 4 octets , 21.1933 : 7 octets ... ) tu ne peut pas
utilisé cette méthode.
tu peux compter les espace. Au n-1 espace tu lis ton nombre.
code:
while( i > 1 )
{
if( Al.get() == ' ' )
i--;
}
Al >> val;
si tu veut utilisé la même technique ( avec seekg ) il faut stocker tes valeur en fichier binaire.