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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Alocacion dinamica de memoria; String, ¿Que estoy haciendo mal?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alocacion dinamica de memoria; String, ¿Que estoy haciendo mal?  (Leído 1,564 veces)
astinx

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Alocacion dinamica de memoria; String, ¿Que estoy haciendo mal?
« en: 2 Junio 2012, 04:33 am »

Hola, me ha ocurrido algo muy particular, miren el siguiente programita:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argc, char** argv)
  6. {
  7. char * string = (char*) malloc (sizeof(char)*11);
  8. string[0]='q';
  9. string[1]='w';
  10. string[2]='e';
  11. string[3]='a';
  12. string[4]='s';
  13. string[5]='d';
  14. string[6]='z';
  15. string[7]='x';
  16. string[8]='c';
  17. string[9]='r';
  18. string[10]='f';
  19. string[11]='v';
  20. printf("%s\n",string);
  21. printf("%d\n",strlen(string));
  22. return 0;
  23. }

¿Porque imprime que la longitud del string en de 15, si aloque memoria para 11 elementos?
¿Porque imprime garbage en el ultimo carácter?

Se que se solucionaria agregando un '\0' al final, ¿pero C no lo agrega automaticamente al alocar la memoria?.

Disculpen mi ingenuidad, se que debe ser algo muy basico y gracias por detenerse a leer.


En línea

La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Alocacion dinamica de memoria; String, ¿Que estoy haciendo mal?
« Respuesta #1 en: 2 Junio 2012, 04:41 am »

Código:
, ¿pero C no lo agrega automaticamente al alocar la memoria?.
en tu mismo codigo te das cuenta que no lo hace, es tu respondabilidad agregarlo

ademas recordar que ahí estas usando 12 elementos y solo reservaste memoria para 11 eso sin contar el caracter nulo que debe
de haber si queres que sea una cadena ANSI.


En línea

astinx

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Re: Alocacion dinamica de memoria; String, ¿Que estoy haciendo mal?
« Respuesta #2 en: 4 Junio 2012, 02:15 am »

Muchas gracias por tu respuesta :).
En línea

La programación hoy en día es una carrera entre los ingenieros de software intentando construir mejores y más eficientes programas a prueba de idiotas y el Universo intentando producir mejores y más grandes idiotas. De momento, el Universo está ganando
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿ Que estoy haciendo mal ? « 1 2 »
Programación Visual Basic
Mr.Know 13 3,777 Último mensaje 15 Junio 2010, 12:16 pm
por Psyke1
[?]Perl ¿Qué estoy haciendo mal?
Scripting
Fritos 3 1,969 Último mensaje 15 Junio 2010, 19:32 pm
por xassiz_
[SEO google ]No se que estoy haciendo mal D=
Desarrollo Web
Kase 9 2,851 Último mensaje 31 Julio 2011, 14:53 pm
por reflol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines