>> 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.
>> 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.