DAVID J. Malan: Entón, verifícase que copiar unha cadea non é tan sinxelo que copiar un primitivo, como un int ou un float. Ao final, debaixo do capó unha cadea é un carácteres de secuencia. Entón, copiando unha cadea, por tanto, ten a involucrar copiar toda esa secuencia de caracteres. Imos volver a nosa atención para que última implantación e arrincar esta liña, corda t é igual a s, o que claramente non era suficiente. Imos substituílo por unha liña que parece, ao contrario, como esta. Cordas t recibe malloc de lonxitude da corda de s e 1 veces o tamaño dun caracter. Agora hai cita algo vai en nesa liña de código. En primeiro lugar, malloc, abreviación de memoria concesión, e o función fai exactamente iso. Dado un número enteiro, el retorna a vostede o dirección dun bloque de memoria de que moitos bytes. Mentres tanto, a lonxitude da corda de s máis 1 pretende indicar que queremos como moitos bytes como s xa ocupa, incluíndo o seu terminador nulo, o barra invertida 0 ao final dunha cadea. Mentres tanto, eu non me lembro, necesariamente, quão grande é un char é que, aínda aínda que na maioría dos sistemas é simplemente unha byte, entón eu vou chamar tamaño do char para descubrir dinamicamente como gran un carácter individual é. Xa multiplicados xuntos, eu volver número total de bytes que eu teño. Pero o que se malloc non devolver a memoria que necesitamos? É mellor eu comprobar a que os seguintes. Se t é igual a null, entón eu vou primeiro para s libres, a memoria de retorno por get cadea, e entón eu vou voltar 1, para referirse a erro. Pero, se está todo ben, eu vou seguir usar un loop de catro e iterado como segue. Para int i obter 0, n é igual a lonxitude da corda de s. Vou facelo, sempre que i é inferior ou igual a n, de xeito que eu iteración través e incluíndo a carácter de terminación nula en s. E en cada iteración, estou indo a incrementar i. Mentres tanto, dentro dese loop, copiar s do i-th en carácter de t i-th localización, só tes que facer t soporte i recibe soporte s i. É mellor eu engadir un adicional liña para o meu código. En particular, por que eu estou usando agora malloc, pedindo para a memoria, é a miña responsabilidade para liberar a memoria cando rematar con el, así como nós debe ser liberar memoria que se dado a nós por corda get. Así, a finais deste programa, eu son vai engadir unha liña adicional para liberar t antes de regresar 0 para indicar éxito. Imos agora gardar, compilar e executar este novo programa. Facer copia de copia 1 punto barra 1. E eu vou dicir algo así como Ola en todas as letras minúsculas. E, por sorte, esta vez a miña orixinal permanece inalterado. Ola en todas as letras minúsculas. Pero a copia é, de feito, feito.