[C con Clase] Cadenas estilo C

Sergio Torró storro.zgz en gmail.com
Mar Ago 6 18:48:33 CEST 2013


Muy buenas a todos. Me gustaría comentar una duda (seguramente muy tonta)
sobre el manejo de cadenas estilo C. Tengo el siguiente código que funciona
perfectamente:

#include <iostream>

using std::cout;

using std::endl;

#include <cstring>

using std::strcat;



int main(void) {

       char cadena1[] = "Hola";

       char cadena2[] = "Perico";



       strcat(cadena1, " ");

       strcat(cadena1, cadena2);

       cout << cadena1 << endl;



       return 0;

}

Echándole un ojo a la declaración de strcat veo que sus parámetros son
punteros (char*, const char*) y se me ocurrió probar a declarar mis dos
cadenas de caracteres como tales: char *cadena1 = "Hola"; Si hago ese
cambio, no funciona.

Creo entender la diferencia entre un array de chars y un puntero: si no me
equivoco el array reserva espacio para cada char que contiene la cadena. Si
lo declaro como un puntero, se reserva espacio para almacenar simplemente
un puntero que puede apuntar a cualquier cadena de chars. Mi duda es: si
esa función está esperando un puntero a una cadena, ¿no debería funcionar
si le paso eso mismo? ¿No se supone que el nombre del array (en este caso
cadena1) es un puntero al primer elemento de la cadena? He pensado que
tiene que ver con la implementación de la función strcat la cual me
gustaría ver, ¿hay alguna forma donde pueda ver la implementación de dichas
funciones? Vengo de Java y estoy muy acostumbrado en Eclipse a hacer un
“Control + clic” en el elemento que quiero ver su implementación ^^

Imagino que para el compilador de GNU no será un problema ver la
implementación (¿simplemente descargar las fuentes verdad?). ¿Es posible
hacerlo también en Visual Studio? Uso Code::Blocks y Visual Studio a partes
iguales.

Un saludo un muchas gracias de antemano =)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130806/9b43efd5/attachment.html>


Más información sobre la lista de distribución Cconclase