Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Selfmastery en 15 Junio 2010, 13:50 pm



Título: [C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.
Publicado por: Selfmastery en 15 Junio 2010, 13:50 pm
Hola!

Estoy trabajando con Linux en C.

Creo y escribo en un archivo de texto plano cualquier cosa con el siguiente código:
Código:
  fd=open("infoEnlaces.txt", O_WRONLY | O_CREAT, 0600);
  char * cad1 = "\t\t*** Fichero de Informacion de Enlaces ****\n\n";
  if ( (nBytesEscritos = write(fd, cad1, strlen(cad1))) <= 0 ) {printf ("Error escritura titulo en archivo\n");}

Aparentemente funciona bien.

Al querer ver el contenido del archivo desde consola con "more infoEnlaces.txt" aparece todo correcto.

PERO si abro el archivo desde la interfaz gráfica, no puedo ver el contenido del archivo correctamente, aparecen unos caracteres extraños.

¿Qué hacer para poder ver el contenido del archivo correctamente desde interfaz gráfica?

Gracias!


Título: Re: [C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.
Publicado por: satu en 15 Junio 2010, 16:49 pm
Hola Selfmastery

Soy muy novato y no sé si tendrá algo que ver, pero cierras fd??

Aparte no sé qué más puede ser, a ver si algún experto...

Saludos


Título: Re: [C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.
Publicado por: Gallu en 15 Junio 2010, 17:14 pm
No me he peleado mucho con open , pero me parece que podría ser el segundo parametro el O_CREAT he buscado el manual de open y esto es lo que me pone en la descripción de dicho parametro

If O_CREAT is set and the file did not previously exist, upon successful completion, open() will mark for update the st_atime, st_ctime and st_mtime fields of the file and the st_ctime and st_mtime fields of the parent directory.

no vaya a ser que la dichosa marca que le pone sean los caracteres raros que ves ...

Por que razon no usas fopen ?


Título: Re: [C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.
Publicado por: 16BITBoy en 15 Junio 2010, 18:49 pm
A mi tu código me funciona perfectamente, y puedo visualizarlo en consola y en gedit por poner. La verdad no se por que no te leerá en modo gráfico, pero debe ser ya cuestión de que editor estés usando y tema de juego de caracteres, pienso yo.


Título: Re: [C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.
Publicado por: nicolas_cof en 15 Junio 2010, 23:28 pm
Didacso, la constante O_CREAT sirve para indicar de crear el fichero y abrirlo ( en el caso que exista se lo sobreescribe ), no creo que esto le este dando inconvenientes con la lectura del mismo.

Selfmastery, lo que podrias verificar es si open no te esta dando error...

Código:
fd = open( "infoEnlaces.txt", O_WRONLY | O_CREAT, 0600);
if ( fd == -1 )
    puts( "ERROR: ..." );

Salu10.