strcpy () - cópia de cadeia mais longa para uma menor

S

sivamit

Guest
Oi como funciona esse código ..? char * p = "wimax"; de char arr [3]; strcpy (arr, p); printf ("% s", arr); saída: wimax o compilador não mostra qualquer aviso ou mensagem de erro .. whatz o prblm ..? Por favor, ajudem ..!!!
 
Isso é a vantagem (d) de ponteiros em C. arr é basicamente um ponteiro para uma memória onde começa arr. Em strcpy (arr, p) que você está usando-o como um ponteiro, o que faz strcpy copiar todos os dados da origem ao destino até encontrar NULL personagem (que foi meu compilador lugares após string "wimax" automaticamente). Então você acaba copiar a cadeia completa de p para arr. se você declarar uma variável depois arr [3]; você pode ver que seu valor é substituído por strcpy ().
 
Eu acho que a penhora pode esclarecer o seu problema .... : D: idea:
 
arr precisa de 6 unidades de armazenamento, 5 para "wimax" e um para o caractere terminador nulo (0). AC compilador não escrever babysitting código para um programador. Se você substituir a memória, você está por sua conta, o compilador não gera código de verificação de limites. Neste caso strcpy () não substituir a memória que teria deixado de funcionar o programa.
 

Welcome to EDABoard.com

Sponsor

Back
Top