Copiando uma String com a Função Strcpy em C
Vamos aprender mais uma função, a função strcpy, ou também chamada de copy.
Essa função é utilizada para fazermos a cópia de uma string, e essa aula aqui, ela é extremamente importante, porque no estudo da programação ou no estudo da aprendizagem da linguagem C, a grande maioria dos alunos, mesmo depois de aprender essa função, ainda costuma errar a tentativa de fazer uma cópia de uma string E aí é muito simples, por que eles ainda erram?
Por questão de não ser muito intuitivo.
Imagine que eu tenha, por exemplo, uma variável a com o número dez.
que eu quero fazer uma cópia desse número dez.
Basta criar uma variável b e fazer essa variável b receber o conteúdo da variável a.
Então, a partir desse momento, a tem dez e b também tem dez, porque ele recebeu uma cópia de a.
Todavia, string não é um valor absoluto como um número, se eu tiver um caractere também funciona, a minha variável letra tem o valor a, e aí eu posso ter aqui l dois, que recebe letra, também funciona, porque isso aqui é um valor absoluto, é um valor primitivo, só que string é um conjunto de caracteres e eu não consigo copiar um conjunto de caracteres usando o sinal de atribuição, é por isso que a atribuição não funciona para strings.
Se eu quero fazer uma cópia de uma string, é preciso percorrer o meu vetor posição por posição, copiando cada um dos caracteres, e aí é isso que a função
strcpy faz para a gente.
Lembre-se sempre que para copiar string, a atribuição não funciona para copiar texto.
Vamos ver então como que a gente usa a função strcpy.
O mais intuitivo é na primeira tentativa, normalmente copiar uma string com atribuição, mas ela não funciona e aí por que a atribuição não funciona?
A atribuição não funciona porque string é um vetor, como que eu faço uma cópia de um vetor?
Eu tenho que percorreu o meu vetor com uma repetição copiando cada elemento, então é por isso que uma atribuição não funciona para copiar uma string.
A cópia de uma string pode ser feita de duas formas, olha só, e aí eu menciono isso aqui.
A primeira forma, percorrer uma string copiando cada caractere para um outro vetor; e a segunda forma é usar a função strcpy.
E o que a função strcpy faz?
Ela faz o passo um, ela percorre o nosso vetor de caracteres copiando cada caractere para outro vetor de caracteres.
Então, olha só, você pode fazer isso aqui, ou você pode usar a função que já existe na biblioteca string.h.
E aí, nós vamos aprender hoje como utilizar essa função aqui.
Ela recebe dois parâmetros, o primeiro parâmetro é para onde eu vou copiar, por isso que eu chamei aqui de destino, para onde eu vou fazer uma cópia.
Então a função recebe dois vetores de caractere, o destino que é para onde eu vou fazer uma cópia, e o vetor origem.
Se eu quero copiar uma string, qual é a string que eu quero copiar?
Então lembre-se, o primeiro parâmetro para onde eu vou copiar e o segundo parâmetro é a origem.
Eu acho, inclusive, que eu coloquei isso aqui olha só, então o primeiro parâmetro é o destino, para onde será copiado a nova string, e o segundo parâmetro é a string original, de onde será feita a nossa cópia.
Vamos ver um exemplo funcionando lá no Code Blocks?
Então vem comigo!
Eu estou aqui no Code Blocks, eu já fiz aqui o include do nosso arquivo de cabeçalho, string.h; eu tenho aqui dois vetores, olha só, vetores de caracteres, s1, com a frase “vamos programar em C?” e o vetor s2 de mesmo tamanho, só que eu não atribuí nenhum valor, então eu não sei o que têm nessas cinquenta posições de memória, elas podem estar limpas ou a gente pode ter aqui lixo de memória.
Aqui na linha nove está o foco da nossa aula, olha só, eu estou utilizando a função strcpy, abreviação de copy, e aí estou passando aqui como parâmetros, o primeiro parâmetro que é o destino, para onde eu vou copiar, eu vou copiar para o meu vetor s2, e o segundo para o meu vetor de origem, de onde eu vou copiar, eu vou copiar de s1.
Depois, na linha onze, eu apenas estou imprimindo o resultado.
Estou imprimindo aqui uma string, que vem do nosso vetor s2, que inicialmente não tem nada.
Vamos compilar e executar esse programa para ver o resultado?
Eu vou então clicar aqui em compilar e executar; e aí olha só, nós temos agora na string s2, a nossa frase, a nossa pergunta “Vamos programar em C?” Então você aprendeu nessa aula uma forma bastante simples de copiar uma string; então agora não erre mais, não tente copiar uma string com atribuição, não vai funcionar, porque você já aprendeu que string é um vetor de caracteres, então a função strcpy percorre a string s1 um copiando cada caractere para a string s2.