Ir ao conteúdo

Posts recomendados

Postado

Bom dia!

 

Estou praticando a nobre arte de programar e, em uma das minhas odisseias para aprender a manipular "arrays de char", me deparei com um erro/aviso do sistema. No meu caso uso o MS Visual Studio 13. O erro dizia algo como: Usar o strcpy pode enfraquecer seu código. Considere usar strcpy_s. Ou então desabilite uma determinada diretriz de segurança.

 

Eu apenas mudei de strcpy para strcpy_s e rodou normal. Mas do que o sistema estava falando? Que problema pode haver e, se há algum problema, porque ainda existe a strcpy?

 

Agradeço desde já

 

valeu!

 

:muro:

Postado

Basicamente a diferença principal radica em que strcpy pode causar um transbordamento de Buffer, a strcpy_s você deve pasar um argumento de más que controla quantos caracteres você pode copiar de um string a outro. Imagine que você tem isso: strcpy(str1, str2), e que str1 é um char str1[10], e que str2 é um char str2[100]. Problemão hein? :eek: Pense que strcpy_s é mais ou menos como strncpy(). O problema anterior não assusta tanto si eu simplesmente digo que só se vai copiar 10 letras de str2 que tem 100 chars a str1 que só tem 10 chars reservados, em realidade somente podemos copiar 9, ja que o décimo deveríamos respeitar para o nulo.

 

O que não sei é si strcpy_s é tão portável como strcpy já que não sei se strcpy_s forma parte do C padrão.

 

Muito obrigado amigo! Realmente elucidou minha mente! Até a próxima! valeu!

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!