Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: n-utz en 18 Noviembre 2016, 05:20 am



Título: Cadena de caracteres por referencia [C]
Publicado por: n-utz en 18 Noviembre 2016, 05:20 am
Buenas gente, miren tengo una duda..

En caso de tener una cadena de caracteres "estática", por ejemplo en mi caso:

lista[n], siendo n un entero pedido antes.

Y quiero pasar dicha variable a una función para que la modifique y después retorne al main para escribirlo en un txt.

Se puede trabajarlo así? O tengo que trabajarlo con malloc?

Mi idea es escribir por ejemplo un nombre, después que retorne al main, lo limpia a 0, y que vuelva a mandarle la misma cadena pero toda llena de 0 para que la complete devuelta.


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: ivancea96 en 18 Noviembre 2016, 16:11 pm
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.
Sin embargo, mi opinión es que yo utilizaría malloc por pura compatibilidad (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features))

Ahora bien, hagas como lo hagas, se lo podrás pasar a una función de la misma manera (como un char*, por ejemplo)


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: geeke en 18 Noviembre 2016, 17:45 pm
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.

Cabe aclarar que los array de longitud variable no forman parte del estándar de C++ pero algunos compiladores lo permiten como una extensión como por ejemplo g++.


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: ivancea96 en 18 Noviembre 2016, 18:16 pm
Oh, sí, gran despiste :X


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: n-utz en 18 Noviembre 2016, 18:18 pm
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.
Sin embargo, mi opinión es que yo utilizaría malloc por pura compatibilidad (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features))

Ahora bien, hagas como lo hagas, se lo podrás pasar a una función de la misma manera (como un char*, por ejemplo)

Perfecto, usaré malloc, el tema es que siempre voy a utilizar las mismas posiciones cambiandole continuamente sus valores. Habrá inconvenientes? Me conviene usar free, antes de acomodar nuevos valores?


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: ivancea96 en 18 Noviembre 2016, 18:22 pm
Si elt amaño del array no va a cambiar desde que haces malloc, no necesitas hacer free. Cuantas menos operaciones hagas, mejor.
Si solo cambiarás sus valores, sé libre de ello sin problema.
Eso sí, al final, cuando hayas acabado, sí que liberas memoria con free, claro está.


Título: Re: Cadena de caracteres por referencia [C]
Publicado por: n-utz en 18 Noviembre 2016, 18:54 pm
Si elt amaño del array no va a cambiar desde que haces malloc, no necesitas hacer free. Cuantas menos operaciones hagas, mejor.
Si solo cambiarás sus valores, sé libre de ello sin problema.
Eso sí, al final, cuando hayas acabado, sí que liberas memoria con free, claro está.

Muchas gracias!!