Ver las NORMAS de estos Foros Web ZackYFileS Chat ZackYFileS Agregar a Favoritos Contactar con Administrador
 
 

TU PUBLICIDAD AQUÍ!!
Navegación
Retroceder   Foros ZackYFileS >
OTROS TEMAS DE INTERES - INTERNET:
> PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc
Nombre de usuario
Contraseña
Configuración de UsuarioAyuda (FAQs)Nuevos PostsBuscar


Respuesta
 
Herramientas
Antiguo 01/06/2008, 23:44   #1
zairilla
Usuario Registrado
 
Fecha de ingreso: 01/jun/2008
Mensajes: 10
zairilla está en el buen camino
Sustituir cadena de caracteres en c++

Hola,
Estoy haciendo una práctica que me han mandado para la facultad y necesito sustituir una palabra que busco en un fichero por otra que pido por pantalla, pero lo que me pasa es que a la hora de modificarlo, si la palabra que está en el fichero tiene cuatro letras por ejemplo, y la que quiero introducir tiene 6, me sobreescribe en la siguiente línea también.Os pongo un ejemplo:
En mi fichero tengo:
R2D2
Satelite
hola

y quiero sustituir R2D2 por camiones, pues me quedaría de la siguiente forma:

camionestelite
hola

Me ha sustitudo la palabra que quería, pero además, parte de la siguiente...
Como tengo que leer y escribir, el fichero lo abro en modo lectura y escritura(r+), y para retroceder en el fichero una vez encontrada la palabra que quiero leer uso la función fseek(puntero,distancia,SEEK_CUR).
Espero que me haya explicado bien, y que me podáis solucionar esto, porque llevo 3 días dándole vueltas y no consigo hacerlo bien...
Muchas gracias de antemano.
zairilla está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Antiguo 02/06/2008, 10:04   #2
SetFlag
Usuario Registrado
 
Fecha de ingreso: 29/abr/2008
Mensajes: 3
SetFlag está en el buen camino
fseek lo único que hace es posicionarte en el archivo, salta x posiciones relativas a un punto especificado. Es lógico que si la palabra que quieres escribir es más grande te sobrescriba la siguiente.

Una posible solución es que trabajes sobre memoria intermedia y que escribas las modificaciones después de introducir por teclado la palabra a sustituir.
SetFlag está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 02/06/2008, 15:23   #3
zairilla
Usuario Registrado
 
Fecha de ingreso: 01/jun/2008
Mensajes: 10
zairilla está en el buen camino
Muchas gracias!
Pero el problema es que me piden que lo haga directamente en el fichero, que busque en él, y que lo sustituya en él mismo de nuevo...
Alguna otra sugerencia??
Gracias.
zairilla está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 02/06/2008, 16:35   #4
SetFlag
Usuario Registrado
 
Fecha de ingreso: 29/abr/2008
Mensajes: 3
SetFlag está en el buen camino
No conozco ninguna función que haga algo así, y en caso de haberla puedes dar por hecho que internamente trabajaría con un buffer intermedio.

Así que a no ser que a alguien se le ocurra algo mejor:

-Comprueba si la cadena a reemplazar tiene el mismo tamaño que la nueva
-Si tiene el mismo tamaño reemplaza
-Si la nueva cadena es mayor tendrás que desplazar a la derecha los caracteres que tenga de más el resto del archivo, y después escribir la nueva cadena.
-Si es menor tendrás que escribir la nueva cadena y desplazar a la izquierda los caracteres que tenga de menos el resto del archivo y acortar el archivo (para ello tendrás que situar EOF el numero de caracteres de diferencia más a la izquierda).
SetFlag está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 03/06/2008, 11:15   #5
zairilla
Usuario Registrado
 
Fecha de ingreso: 01/jun/2008
Mensajes: 10
zairilla está en el buen camino
Lo comprobaré, a ver si me lo solucionas...
Muchas gracias!
Un saludo.
zairilla está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Respuesta


Usuarios viendo actualmente este tema: 1 (0 usuarios registrados y 1 visitantes)
 
Herramientas

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado

Ir al foro

Temas similares
Tema Autor Foro Resp. Último mensaje
sabeis como se hace para ver una cadena libre de ecuador (para ver el mundial)? videbatea Philips DSX607x 15 15/06/2006 22:42
Ejercicio C++ -> Cadena de caracteres Snake12 PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc 6 11/03/2006 16:29
cadena aiwa z-l10 lovecraft ELECTRÓNICA GENERAL 19 07/10/2005 23:05


!! ADVERTENCIAS !!: Las informaciones aquí publicadas NO CONTIENEN KEYS para la decodificación de ningún sistema: NO SON OPERATIVOS en sistemas SAT que precisen de su correspondiente suscripción.

ESTA TOTALMENTE PROHIBIDO EL USO DE ESTAS INFORMACIONES PARA LA MODIFICACIÓN O  DEFRAUDACIÓN DE SISTEMAS DE ACCESO CONDICIONAL.

ESTOS FOROS SON MODERADOS Y NO SE PERMITE LA PUBLICACIÓN DE INFORMACIONES ILEGALES POR PARTE DE LOS USUARIOS. EN CASO DE DETECTARSE ESTE TIPO DE INFORMACIONES, LOS USUARIOS SERÁN EXCLUIDOS DE ESTAS PÁGINAS.

USO DE COOKIES: Utilizamos COOKIES y de terceros para mejorar nuestros servicios y navegación por la web. Si continua navegando, consideramos que acepta su uso.  


La franja horaria es GMT +2. Ahora son las 10:01.


-------------------------------------------------------------------- --------------------------------------------------------------------

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
Hispaservicios - J.G.C - 29112549T - Rio Cinca, 2, 30 (50180) SPAIN.
Todos los derechos reservados. Prohibida cualquier reproducion total o parcial.


Foros Patrocinados por anunciantes.