[C Linux] Escribo archivo con write() y su contenido se ve mal en la GUI.

Iniciado por Selfmastery, 15 Junio 2010, 13:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Selfmastery

Hola!

Estoy trabajando con Linux en C.

Creo y escribo en un archivo de texto plano cualquier cosa con el siguiente 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!

satu

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
Breakbeat como forma de vida

Gallu

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 ?
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

16BITBoy

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.
Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".

nicolas_cof

#4
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...

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


Salu10.