Estoy trabajando en un programa para convertir archivos en formato .PCD a formato .OFF, para lo cual necesito leer el archivo. Es como leer un .txt y borrar el header pero adicional borrar la 4 columna de datos, hasta el momento he conseguido eliminar el header pero no logro eliminar la cuarta columna.
El formato es algo así:
#.PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06
0.97192 0.278 0 4.2108e+06
0.944 0.29474 0 4.2108e+06
0.98111 0.24247 0 4.2108e+06
0.93655 0.26143 0 4.2108e+06
0.91631 0.27442 0 4.2108e+06
0.81921 0.29315 0 4.2108e+06
0.90701 0.24109 0 4.2108e+06
0.83239 0.23398 0 4.2108e+06
0.99185 0.2116 0 4.2108e+06
0.89264 0.21174 0 4.2108e+06
0.85082 0.21212 0 4.2108e+06
0.81044 0.32222 0 4.2108e+06
0.74459 0.32192 0 4.2108e+06
0.69927 0.32278 0 4.2108e+06
0.8102 0.29315 0 4.2108e+06
0.75504 0.29765 0 4.2108e+06
La cuarta columna que necesito eliminar es la que comienza con el 4.
y el codigo que tengo para eliminar el header este el siguiente:
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <iostream>
#include<stdlib.h>
#include<string.h>
#include<fstream>
using namespace std;
int main()
{
int archivo;
char caracter;
long tamanno_archivo;
archivo=open("prueba.pcd", O_RDWR | O_BINARY);
if(archivo==-1) printf("Error al abrir archivo.\n");
tamanno_archivo=filelength(archivo);
for(long pos=1; pos<tamanno_archivo; pos++)
{
lseek(archivo, pos, 0);
read(archivo, &caracter, sizeof(char));
lseek(archivo, pos-185, 0);
write(archivo, &caracter, sizeof(char));
}
chsize(archivo, tamanno_archivo-185);
close(archivo);
}
De antemano gracias.