[C con Clase] Ayuda, inicializar cadena de texto

Diego diegogeid en gmail.com
Mar Sep 17 21:27:51 CEST 2013


Hola Steven.

Muchas gracias!



El 17 de septiembre de 2013 16:17, Davidson, Steven <srd4121 en njit.edu>escribió:

> Hola Diego,
>
> 2013/9/17 Diego <diegogeid en gmail.com>
>
>> Buenas tardes, tengo una duda simple cuya respuesta edsconozco y la
>> planteo:
>>
>> Puedo inicializar arrays de cadenas de caracteres de forma simple?
>>
>> Es decir, en vez de inicializar una cadena de caracteres como
>>
>> char aa[]={"Cadena de caracteres"}
>>
>>
> Esto no es correcto. Piensa que las comillas ya incluyen las llaves. Por
> lo tanto, escribe:
>
>

> char aa[] = "Cadena de caracteres";
>
>
Es verdad lo de los corchetes, me dejé llevar por la declaración de los
arrays jaja. Gracias.


>  Necesito inicializar un array de ellos, algo así como
>>
>> char aa[][]={"Cadena 1","Cadena 2","cadena 3"}
>>
>>
> La inicialización es correcta, pero no la declaración de 'aa', porque
> debes indicar las cantidades de los elementos, aunque no tienes que hacerlo
> para la primera "dimensión". Esto es,
>
> char aa[][9] = { "Cadena 1", "Cadena 2", "cadena 3" };
>
> De foma tal que cuando inserte una instrucción como
>>
>> puts(aa[0]);
>>
>> aparezca en la pantalla la correspondiente cadena, o existe alguna forma
>> simple de hacerlo?
>>
>>
> Lo anterior funcionará, pero si quieres un array de cadenas de diferentes
> cantidades de caracteres, entonces puedes usar un array de punteros a
> 'char'. Por ejemplo,
>
> char cad1[] = "Cadena 1";
> char cad2[] = "Cadena 2";
> char cad3[] = "cadena 3";
> char cad4[] = "hola";
> char cad5[] = "mundo";
>
> char * aa[] = { cad1, cad2, cad3, cad4, cad5 };
>
>
Perfecto, intentaba evitarlo pero veo que no hay opción.


> Otra implementación es usar cadenas adjudicadas dinámicamente. Por ejemplo,
>
> char *aa[5];
>
> aa[0] = new char[10];
> aa[1] = new char[20];
> aa[2] = new char[5];
> aa[3] = new char[31];
> aa[4] = new char[28];
> ...
>
> Obviamente hay que asignar caracteres a cada cadena guardada en 'aa'. Por
> supuesto, también hay que liberar la memoria dinámicamente con 'delete[]'.
>

Mas que claro, me olvidé decir que el lenguaje es C y no C++, y en general
necesito evitar las sentencias que utilicen memoria dinámica.


>
>
> Espero que esto te ayude.
>
> Steven
>

Me ayuda, era lo que quería saber, muchas gracias por la respuesta

Saludos
Diego
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130917/ec015592/attachment.html>


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