• Viernes 3 de Mayo de 2024, 11:55

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - JoniJnm

Páginas: [1]
1
C/C++ / Re: Ficheros en C++
« en: Miércoles 7 de Julio de 2010, 16:12 »
Muchas gracias r0d, lo probaré, aunque al final pasé todo el fichero a un string e hice los cambios con él.

PD: Pensé en lo de que el puntero podría estar al final, pero me dije 'lo pondrá el open al principio, digo yo'. Además no sabía cómo ponerlo al principio.

Saludos y gracias!

2
C/C++ / Ficheros en C++
« en: Domingo 4 de Julio de 2010, 14:35 »
Hola,

Necesito hacer una copia manual de un archivo a otro y para ello uso:
Código: C++
  1. ifstream original;
  2. ofstream nuevo;
  3. string s; //string auxiliar
  4.  
Bueno, pues voy cogiendo datos del original y añadiéndolo al nuevo:
Código: C++
  1. original.open("original.txt");
  2. original.good(); // da true
  3. nuevo.open("nuevo.txt");
  4. nuevo.good(); // da true
  5.  
  6. while (!original.eof()) {
  7.     getline(original, s);
  8.     // Aquí compruebo cosas del string para saber si tengo que añadirlo o no (el fichero no lo toco)
  9.     // así que no puedo pasar char por char
  10.     if (condicion)
  11.         nuevo<<s;
  12. }
  13. original.fail(); // da 'true' AQUÍ ESTÁ EL PROBLEMA
  14. original.bad(); // da false
  15. nuevo.fail(); // da false
  16.  
  17. original.close();
  18. nuevo.close();
  19.  
  20. // Cuando vuelvo a abrir el original:
  21. original.open("original.txt");
  22. original.good(); // da false así que no puedo leer ni hacer nada
  23.  
  24. // Si volviese a abrir el nuevo:
  25. nuevo.open("nuevo.txt");
  26. nuevo.good(); // da true
  27.  
Como veis, cuando vuelvo a abrir el original fail() no me devuelve false. Así que falla algo, bad() no falla, es el "failbit". El problema de esto es que cuando cierro los dos ficheros, no puedo volver a abrir el original (al reabrirlo original.good() no devuelve true).

Por lo que he leído, failbit puede fallar porque justo antes del eof se coja el último caracter nulo del objeto, pero entonces qué tengo que hacer? Necesito abrirlo dos veces. No sé si tiene que ver algo que el fichero esté en UTF-8 sin/con bom o ANSI

El contenido del fichero se copia bien, el problema es, como digo, que no puedo abrir, copiar, cerrar y volver a abrir. Es como si el fichero no se cerrara bien.

Alguien sabe qué puede estar pasando? Gracias!

3
C/C++ / Comparar chars
« en: Sábado 25 de Abril de 2009, 12:57 »
Hola,

    Estoy intentando hacer una función que me permita saber cuántas carpetas atrás tiene una ruta, por ejemplo:

../../mi_carpeta tiene hacia atrás dos carpetas. Pues en la función tengo esto:

Código: C
  1. int carpetas_atras(char *ruta) {
  2.     int aux = 0;
  3.     int i;
  4.     for (i=0; i<strlen(ruta); i++) {
  5.         if (ruta[i] == "." && ruta[i+1] == "." && ruta[i+2] == "/") { // => ../
  6.             aux++;
  7.         }
  8.         //test => ruta[i] = NULL;
  9.     }
  10.     return aux;
  11. }
  12.  

Pues no sé por qué me da error en la linea de comparación, este es el error:
"comparison between pointer and integer"

He probado de todo: (char*)ruta, (char)ruta, (char*)(ruta + i), (char)(ruta + i), pero ninguno funciona xD

Aunque alguno de los de arriba no me salta error, si hago una asignación sí:
(char*)(ruta + i) = ""

Qué debería poner? O es que en C no se puede acceder a un elemento de un "string"?

Saludos!

Páginas: [1]