>> ENCEINTE: Écrivons un programme qui invite l'utilisateur à deux cordes et
signale ensuite si ces chaînes sont identiques ou non identiques.
J'ai déjà commencé à nous hors ici par printf appeler deux fois et appelant
GetString deux fois, stocker le retour valeurs de s et t, respectivement.
>> Maintenant, mes instincts de comparer ces deux cordes serait d'utiliser le familier
opérateur d'égalité -
si s est égal égaux t.
Ensuite, je vais aller de l'avant et d'impression sur "Vous avez tapé la même chose!
Sinon, si ce n'est pas vrai, je suis tout simplement aller taper printf ("Vous avez tapé
choses différentes!
>> Assez simple -
Je suis tout simplement en comparant s contre t, et si elles sont égales,
imprimer autant.
Disons compiler et exécuter ce programme.
Faire comparer 0. / Comparer 0, dire quelque chose, bonjour,
dire quelque chose, bonjour.
>> Malheureusement, le programme pense que je n'ai tapé des choses différentes, même si je
clairement typé "bonjour" le même manière les deux fois.
Maintenant, pourquoi cela pourrait-il être?
>> Eh bien, il s'avère que tout cela temps, les chaînes ont été un peu plus
complexe d'une séquence de caractères sous la hotte.
En réalité, une chaîne est un pointeur ou un adresse, en particulier l'adresse
du premier caractère par le fait que séquence de caractères.
>> Et quand on compare s contre t avec le signe égal égal, nous sommes
fait demander, est cette adresse égal égal à cette adresse?
Et cela ne va pas être le cas si l'utilisateur a tapé dans deux différents
cordes et nous avons appelé deux fois GetString pour les obtenir, parce que la mémoire
que GetString utilise pour stocker le premier chaîne pourrait être ici dans la RAM, mais la
mémoire qui GetString utilise pour stocker la deuxième chaîne va
d'être ici dans la RAM.
Et bien sûr, puis, ces deux morceaux de mémoire ont des adresses différentes pour
leurs premiers caractères.
>> Il en est de s égal égal à t?
Eh bien, non.
Si s et t pointent vers différents segments de mémoire, car ils seraient par
réclamer à deux reprises GetString, ils ne sont pas, en effet, va être le même.
Il semble donc que ce soit le cas pour que comparer deux chaînes dans la intuitif
manière que nous attendons, caractère pour caractère, nous devons une autre technique
tout à fait.