Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2005, 02:53
Neptuno
 
Fecha de Ingreso: marzo-2005
Mensajes: 33
Antigüedad: 19 años, 8 meses
Puntos: 0
leer de un fichero y guardar en otro

Hola Amigos, estoy intentando ller de un fichero y almacenar los datos en un estructura y luego obtener los datos de la estructura pra gurdarlo en otro fichero distinto.
El problema que es que siempre me escribe la misma linea en el fichero que quiero generar.
El códgio que utilizo es:


void TreatLodFile::ReadLodFile()
{
int pt, i, j;
unsigned int Vertex0, Vertex1, modVertex;
unsigned int n0, n1, n2, Triangulo0, Triangulo1;
FILE *fp;
char fileLOD[80], buff[80];

Step aux;

//pt=sprintf(fileLOD,"..\\media\\models\\bunny.lod") ; //%s.lod",Models[gMesh]);
pt=sprintf(fileLOD,"./bunny.txt"); //%s.lod",Models[gMesh]);
fp = fopen(fileLOD, "r");
printf("\n cadena %s\n", fileLOD);
system("pause");

if( fp == NULL)
{
printf("\nError: No se ha podido abrir el fichero correctamente\n");
system("pause");
exit(1);
}

j = 2;
while(!feof(fp))
{

fgets(buff, 80, fp);
printf("\nLA CADENA ES: %s\n", buff);

if( *buff == 'v' && *(buff+1) == '%')
{
sscanf(buff+j,"%u%u%u%u%u%u%u", &Vertex0, &Vertex1, &n0, &n1, &n2, &Triangulo0, &Triangulo1);
aux.mV0 = Vertex0;
aux.mV1 = Vertex1;
aux.mT0 = Triangulo0;
aux.mT1 = Triangulo1;

printf("\nvertice0 -> %u \nvertice1 -> %u\ntrinagulo0 -> %u\ntriangulo1 -> %u",aux.mV0,aux.mV1,aux.mT0,aux.mT1);

//j+=6;
//sscanf(buff+j,"%u%u", &Triangulo0, &Triangulo1);
//aux.mT0 = Triangulo0;
//aux.mT1 = Triangulo1;
//printf("\nTriangulo0 -> %u \nTriangulo1 -> %u\n",aux.mT0,aux.mT1);


j++;
while(*(buff+j) != '&') j++;
j++;

while (*(buff+j) != NULL)
{
if(*(buff+j)!='\r')
{
sscanf((buff+j), "%u", &modVertex);
printf("\nmodVertex -> %u\n", modVertex);
aux.mModfaces.push_back(modVertex);
j=j+2;
}
//else
// j++;
}

} //fin if v%

this->LodInfo.push_back(aux);

*buff = NULL;
} //fin while feof

}


void TreatLodFile::CreateFile()
{

int i,k;
FILE *newFile;

Step aux;

//newFile = fopen("..\\media\\models\\archivoPrueba.txt", "w");
newFile = fopen("./archivoPrueba.txt", "a");

for (i=0;i<this->LodInfo.size();i++)
{
aux.mV0 = this->LodInfo[i].mV0;
aux.mV1 = this->LodInfo[i].mV1;
aux.mT0 = this->LodInfo[i].mT0;
aux.mT1 = this->LodInfo[i].mT1;

fprintf(newFile, "%u %u %u %u & ", aux.mV0, aux.mV1, aux.mT0, aux.mT1);
for(k=0;k<this->LodInfo[i].mModfaces.size();k++)
{
//aux.mModfaces.push_back(this->LodInfo[i].mModfaces[k]);
fprintf(newFile,"%u ", this->LodInfo[i].mModfaces[k]);
}

fprintf(newFile, "\n");
}


fclose(newFile);

}


El archivo del cual lee tiene la siguiente informacion:

v% 44 55 88 66 54 21 45 & 12 47 41
v% 23 45 22 33 09 12 35 & 98 74 43

me guarda en el archivo que genero lo siguiente:

44 55 21 45 & 12 2 47 41 1
44 55 21 45 & 12 2 47 41 1 1 1 1
44 55 21 45 & 12 2 47 41 1 1 1 1

Alguien sabe xq siempre me guarda la misma linea y los 1s de mas?????

Gracias de antemano