[C con Clase] Pregunta

Facundo Curti facu.curti en gmail.com
Sab Nov 23 01:44:31 CET 2019


Aclarar también que siempre debes introducir un carácter nulo. En este caso
estarías introduciendo una vulnerabilidad a tu programa, y podría crashear.
Ya que estas accediendo a una sección de memoria más allá del array, y no
sabes lo que hay ahí. De todas formas entiendo que eso fue solo para probar
y entender como funciona el lenguaje, lo cual es muy bueno. Sigue así! :D

El vie., 22 de noviembre de 2019 21:38, Davidson, Steven <srd4121 en njit.edu>
escribió:

> Hola Hermilo,
>
> Esto es por que los dos arrays no son idénticos ni tampoco el contenido de
> cada uno. Puede mirar el tamaño de cada array de esta manera,
>
> cout << sizeof palabra << endl;
> cout << sizeof palabra2 << endl;
>
> Debería aparecer en pantalla:
>
> 9
> 8
>
> La razón es que la cadena "Clemente" guarda implícitamente el carácter
> nulo al final, justo después del carácter 'e'. El contenido de 'palabra2'
> contiene los ocho caracteres inicializados sin guardar ningún carácter
> nulo. Para que los contenidos sean iguales, debería agregar el carácter
> nulo explícitamente a la inicialización de 'palabra2'; esto es,
>
> char palabra2[] = { 'C', 'l', 'e', 'm', 'e', 'n', 't', 'e', '\0' };
>
> Tenga presente que la función estándar, 'strlen()', meramente contabiliza
> los caracteres hasta llegar al primer carácter nulo, que es cuando se
> detiene. En el caso de 'palabra2', no hay un carácter nulo establecido, por
> lo que puede continuar sin interrupción hasta que se encuentre un valor
> cero, que se interpreta como el carácter nulo y se detendrá.
>
>
> Espero que esto aclare la duda.
>
> Steven
>
>
> On Fri, Nov 22, 2019 at 7:10 PM Ing Hermilo Alvarez <hgalvarezm en gmail.com>
> wrote:
>
>> En el siguiente programa C++
>> ¿por qué no me da la misma longitud en ambas variables que se suponen
>> idénticas?
>>
>> #include<iostream>
>> #include<conio.h>
>> #include<string.h>
>>
>> using namespace std;
>>
>> int main()
>> {
>> char palabra[] = "Clemente";
>> char palabra2[] = {'C','l','e','m','e','n','t','e'};
>> int longitud = 0, longitud2 = 0;
>>
>> longitud = strlen(palabra);
>> longitud2 = strlen(palabra2);
>>
>> cout << palabra<<endl;
>> cout<<longitud<<endl;
>>
>> cout << palabra2<<endl;
>> cout<<longitud2<<endl;
>>
>>
>> getch();
>> return 0;
>> }
>>
>> char palabra me da 8 que es correcto
>> char palabra2 me da 11, aventando basura en los tres ultimos caracteres.
>>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20191122/40f86078/attachment-0001.html>


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