DAVID J. MALAN: Então, verifica-se que copiar uma string não é tão simples quanto copiar um primitivo, como um int ou um float. Afinal, debaixo do capô uma string é um caracteres de seqüência. Então, copiando uma string, portanto, tem a envolver copiar toda essa seqüência de caracteres. Vamos voltar nossa atenção para que última implementação e arrancar esta linha, corda t é igual a s, o que claramente não era suficiente. Vamos substituí-lo por uma linha que parece, ao contrário, como esta. Cordas t recebe malloc de comprimento da corda de s e 1 vezes o tamanho de um caracter. Agora há citação um pouco vai em nessa linha de código. Primeiro, malloc, abreviação de memória atribuição, e o função faz exatamente isso. Dado um número inteiro, ele retorna a você o endereço de um bloco de memória de que muitos bytes. Enquanto isso, o comprimento da corda de s mais 1 pretende indicar que queremos como muitos bytes como s já ocupa, incluindo o seu terminador nulo, o barra invertida 0 no final de uma string. Enquanto isso, eu não me lembro, necessariamente, quão grande é um char é que, mesmo embora na maioria dos sistemas é simplesmente uma byte, então eu vou chamar tamanho do char para descobrir dinamicamente como grande um caráter individual é. Uma vez multiplicados juntos, eu voltar a número total de bytes que eu preciso. Mas o que se malloc não devolver a memória que precisamos? É melhor eu verificar para que os seguintes. Se t é igual a null, então eu vou primeiro para s livres, a memória retornado por get string, e então eu vou retornar 1, para significar erro. Mas, se está tudo bem, eu vou continuar usar um loop de quatro e iterar como se segue. Para int i obter 0, n é igual o comprimento da corda de s. Eu vou fazer isso, desde que i é inferior ou igual a n, de modo que eu iteração através e incluindo a caractere de terminação nula em s. E em cada iteração, estou indo para incrementar i. Enquanto isso, dentro desse loop, copiar s do i-th em caráter de t i-th localização, basta fazer t suporte i recebe suporte s i. É melhor eu adicionar um adicional linha para o meu código. Em particular, porque eu estou usando agora malloc, pedindo para a memória, é a minha responsabilidade para liberar a memória quando eu terminar com ele, assim como nós deve ser liberar memória que é dado a nós por corda get. Assim, no final deste programa, eu sou vai adicionar uma linha adicional para liberar t antes de retornar 0 para indicar sucesso. Vamos agora salvar, compilar e executar este novo programa. Fazer cópia de cópia 1 ponto barra 1. E eu vou dizer algo como Olá em todas as letras minúsculas. E, felizmente, desta vez a minha original permanece inalterado. Olá em todas as letras minúsculas. Mas a cópia é, de fato, capitalizada.