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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿La función memcpy coloca el final de cadena "\0"?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿La función memcpy coloca el final de cadena "\0"?  (Leído 1,011 veces)
Dano1952

Desconectado Desconectado

Mensajes: 14


Ver Perfil
¿La función memcpy coloca el final de cadena "\0"?
« en: 29 Junio 2018, 15:13 pm »

Hola a todos, buen día.-
Tengo esa duda y por mas que busco ninguna página que consulto me da la respuesta, estoy haciendo una agenda y quiero poner en cada registro la fecha de alta del contacto.-

Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <string.h>
  4.  
  5. int main(int argc,char* argv[]) {
  6.  
  7. time_t tiempo = time(0);
  8. struct tm *tlocal = localtime(&tiempo);
  9. char output[128], fecha[11];
  10. strftime(output,128,"%d/%m/%Y %H:%M:%S",tlocal);
  11. memcpy( fecha, output, 10 );
  12.  
  13. printf("\n %s\n",fecha);
  14.  
  15. return 0;
  16. }

Es todo, espero Uds. lo sepan.
Dano


En línea

MCKSys Argentina
Moderador Global
***
Conectado Conectado

Mensajes: 5.019


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ¿La función memcpy coloca el final de cadena "\0"?
« Respuesta #1 en: 29 Junio 2018, 17:31 pm »

Hola!

Si le haces click a la función en el código que has colocado, verás como funciona la misma.

De http://pubs.opengroup.org/onlinepubs/009695399/functions/memcpy.html

Citar
The memcpy() function shall copy n bytes from the object pointed to by s2 into the object pointed to by s1. If copying takes place between objects that overlap, the behavior is undefined.

Osea, no dice nada de string, ni de ceros al terminar, ni nada. Sólo copia de A a B, n bytes.

Osea, el null char se lo tienes que colocar tú; o bien, copiar a un buffer con ceros y esperar que la función de copia no sobreescriba el último byte con algo que no sea cero.

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Dano1952

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: ¿La función memcpy coloca el final de cadena "\0"?
« Respuesta #2 en: 29 Junio 2018, 20:00 pm »

Ok, entendido y mil disculpas si pregunte algo muy obvio, realmente no encontraba la respuesta a mi duda.

Código
  1. fecha[10] = '\0';

Saludos y gracias.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.533



Ver Perfil
Re: ¿La función memcpy coloca el final de cadena "\0"?
« Respuesta #3 en: 30 Junio 2018, 08:43 am »

Para eso usa strcpy que sí lo coloca.
En línea

Dano1952

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: ¿La función memcpy coloca el final de cadena "\0"?
« Respuesta #4 en: 30 Junio 2018, 17:22 pm »

Ok,ok esa es la función ideal.
Gracias MAFUS.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines