DAVID J. MALAN: Así que resulta que copiar una cadena no es tan sencillo como copiar un primitivo, como un int o un float. Después de todo, debajo de la campana de una cadena es una secuencia de caracteres. Por lo tanto la copia de una cadena, por lo tanto, tiene que involucrar a copiar toda esa secuencia de personajes. Vamos a centrar nuestra atención de nuevo a la última aplicación y arrancar este línea, cadena t es igual a s, que claramente no era suficiente. Vamos a sustituir con una línea que parece, en cambio, como este. Cadena t consigue malloc de longitud de la cadena de S Plus 1 veces el tamaño de un char. Ahora hay presupuesto un poco de ir en esta línea de código. En primer lugar, malloc, la abreviatura de la memoria la asignación y la función hace precisamente eso. Dado un número entero, se devuelve a usted el dirección de un trozo de memoria de que muchos bytes. Mientras tanto, la longitud de la cadena de s más 1 pretende indicar que queremos que tantos bytes como s ya ocupa, incluido su terminador nulo, el barra invertida 0 en el final de una cadena. Mientras tanto, no me acuerdo necesariamente qué tan grande es un char, incluso aunque en la mayoría de los sistemas es simplemente 1 byte, así que voy a llamar a tamaño de char a averiguar dinámicamente lo grande un carácter individual es. Una vez multiplicados entre sí, que vuelva la número total de bytes que necesito. Pero lo que si malloc no devolver la memoria que necesitamos? Será mejor que compruebo que de la siguiente manera. Si t es igual a null, entonces estoy yendo primero que s libres, la memoria devuelto por get cadena, y luego me voy a devuelve 1, para indicar el error. Pero si todo está bien, voy a proceder para utilizar un bucle de cuatro y iterar de la siguiente manera. Para int i obtener 0, n es igual a la longitud de la cadena de s. Voy a hacer esto siempre y cuando i es menos de o igual a n de modo que yo iterar a través de e incluyendo la carácter de terminación null en s. Y en cada iteración, estoy va a incrementar i. Mientras tanto, dentro de este bucle, copiar s del i-ésimo carácter en la t i-th ubicación, basta con hacer t soporte i Obtiene s abrazadera i. Que más me gustaría añadir uno adicional line a mi código. En particular, porque ahora estoy usando malloc, pidiendo la memoria, que es mi la responsabilidad de liberar esa memoria cuando he terminado con él, al igual que debe liberar la memoria que es que nos ha dado cuerda a conseguir. Así que al final de este programa, estoy va a añadir una línea adicional para liberar t antes de regresar 0 para indicar el éxito. Ahora vamos a guardar, compilar y ejecutar este nuevo programa. Hacer copia de copia 1 punto slash 1. Y voy a decir algo así como hola en minúsculas. Y por suerte, esta vez mi original permanece sin cambios. hola en minúsculas. Pero la copia es, de hecho, con mayúscula.