elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funciones end and erase en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funciones end and erase en C?  (Leído 5,202 veces)
bertamax

Desconectado Desconectado

Mensajes: 40


Ver Perfil
Funciones end and erase en C?
« en: 1 Agosto 2010, 20:18 pm »

Tengo el siguiente codigo en C++:

.
.
.
string subdir=dirname;
string::iterator its=subdir.end();
its--;
subdir.erase(its);
subdir+=file1.cFileName;
.
.
.

Y me gustaría transformarlo a código C, pero tengo problema con las funciones end y erase porque no existen en C y no sé cuales podrían ser sus equivalentes.

Muchas gracias


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Funciones end and erase en C?
« Respuesta #1 en: 1 Agosto 2010, 21:06 pm »

Hola, te explico, la función end de std::string, retorna un iterador ( en la librería estándar se usan iteradores para poder recorrer contenedores, es como un puntero a una posición en un contenedor ) al próximo elemento después del último caracter en la cadena, es decir, al final ... (lo opuesto a begin, que retorna el principio de la cadena)

En en caso de erase, como bien su nombre dice, borra un caracter de la cadena, y la posición donde se borra está dada por el iterador (se borra el último caracter) ... y después se le concatena otra cadena usando el operador +
Las funciones en C que te ayudarían sería strlen() y strcat() en principio, pero como el manejo de memoria no está abstraído en clases como string, vas a tener que hacerlo a mano con malloc(), realloc()* y free()
Acordate que por cada vez que pidas memoria con funciones tipo malloc/realloc y calloc, tenés que liberarla sí o sí con free, sino vas a tener una fuga de memoria en el programa ...
Deberías leer de punteros y manejo de memoria antes ... no es algo que tome mucho leer, te cedo el link de conclase, pero quizá alguien conozca algo mejor -> http://c.conclase.net/curso/index.php?cap=012#inicio (es un curso de C++, pero sirve)
Y ya que vas a lidiar con memoria y funciones como strcat(), te dejo > este link < de lo que no hay que hacer, es decir, errores comunes en la gente que recién arranca a programar

Saludos y suerte !

P.S : Tiene pinta de ser un código un tanto guarro ...

* : No necesariamente, pero acordate de pedir siempre lo que uses, no desperdicies memoria ... después siempre podés pedir más !


« Última modificación: 1 Agosto 2010, 21:11 pm por vertex@Symphony » En línea

bertamax

Desconectado Desconectado

Mensajes: 40


Ver Perfil
Re: Funciones end and erase en C?
« Respuesta #2 en: 5 Agosto 2010, 03:39 am »

Gracias, creo que lo sabí resolver bien  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
soft HDD ERASE (HIREN BOOT CD)
Software
osvachuky 5 4,861 Último mensaje 30 Mayo 2011, 13:33 pm
por osvachuky
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines