DAVID J. Malan: Ainsi, il s'avère que la copie d'une chaîne n'est pas aussi simple que la copie d'un primitif, comme un int ou un float. Après tout, sous le capot d'une chaîne est un des caractères de la séquence. Donc, la copie d'une chaîne, par conséquent, doit impliquer la copie que toute la séquence de caractères. Tournons notre attention vers ce que dernière mise en œuvre et arracher ce ligne, chaîne t est égale à s, qui n'était manifestement pas suffisant. Nous allons remplacer par une ligne qui semble, au contraire, comme ça. Chaîne t obtient malloc de longueur de la chaîne de s et 1 fois la taille d'un caractère. Maintenant, il ya citation un peu aller dans cette ligne de code. Tout d'abord, malloc, court pour la mémoire allocation, et l' fonction fait exactement cela. Étant donné un nombre entier, il revient à vous la adresse d'un bloc de mémoire de que le nombre d'octets. Pendant ce temps, la longueur de la chaîne de plus 1 est destiné à indiquer que nous voulons que le nombre d'octets que s occupe déjà, y compris son terminateur null, le 0 barre oblique inverse à la fin d'une chaîne. Pendant ce temps, je ne me souviens pas nécessairement la taille d'un char est, même mais sur la plupart des systèmes, il est tout simplement une octet, donc je vais appeler la taille de l'omble de comprendre de façon dynamique la taille un caractère individuel est. Une fois multipliés ensemble, je serai de retour l' nombre total d'octets dont j'ai besoin. Mais que faire si malloc ne retourner la mémoire dont nous avons besoin? Je ferais mieux de vérifier que pour les suivants. Si t est égal à zéro, alors je vais d'abord à s gratuitement, la mémoire renvoyée par get chaîne, et puis je vais retourner 1, pour signifier erreur. Mais si tout va bien, je vais procéder à utiliser une boucle de quatre et itérer comme suit. Pour int j'obtiens 0, n est égal à la longueur de la chaîne de l'art. Je vais faire ce aussi longtemps que i est inférieur ou égal à n de sorte que I itérer jusqu'à et y compris la caractère de fin null s. Et à chaque itération, je suis va incrémenter i. Pendant ce temps, à l'intérieur de cette boucle, la copie s de i-ème caractère dans i-e de t emplacement, il suffit de faire t support i obtient de support i. Je ferais mieux d'ajouter une supplémentaire ligne de mon code. En particulier, parce que je suis maintenant à l'aide malloc, demandant pour la mémoire, c'est ma responsabilité pour libérer de la mémoire quand je suis fait avec elle, tout comme nous devrait être libérer de la mémoire c'est qui nous est donnée par la chaîne de get. Donc, à la fin de ce programme, je suis va ajouter une ligne supplémentaire pour libérer t avant de retourner 0 pour indiquer la réussite. Voyons maintenant Enregistrez, compilez et exécuter ce nouveau programme. Faire une copie 1 point slash copie 1. Et je vais dire quelque chose comme bonjour en minuscules. Et heureusement, cette fois, mon d'origine reste inchangé. bonjour en minuscules. Mais la copie est, en effet, en majuscule.