Bonjour et bienvenue à nouveau. Je voudrais fournir une démonstration d'une solution
à notre défi précédent qui avait à voir avec la compréhension des tableaux de caractères.
Principalement, nous allons écrire des fonctions pour obtenir la longueur d'une chaîne, une
fonction pour concaténer une chaîne et une fonction pour vérifier
si deux chaînes sont égales.
Je vais donc créer un projet. Je vais juste le nommer
en comprenant les chaînes de caractères.
Et la première chose que nous ferons est de mettre en œuvre cette fonction de longueur.
Nous allons créer trois
déclarations de fonction en haut.
Nous allons nommer la première longueur de chaîne.
Nous allons utiliser le cas de chameau pour notre dénomination.
Cela va simplement prendre une chaîne de caractères constante.
Alors, comment savons-nous que c'est une chaîne parce que c'est un tableau de caractères
et ensuite nous allons mettre un point-virgule. Ce sera le premier à créer, nous allons donc
nous arrêter là pour l'instant.
Et nous allons créer
cette fonction, la
définir ci-dessous pour que vous compreniez ce joli mot-clé const.
Const signifie que c'est une chaîne de caractères qui ne peut pas changer, ne peut pas être modifiée.
La raison pour laquelle nous utilisons const ici
est que nous ne voulons pas modifier la chaîne à l'intérieur
de la fonction, nous voulons simplement l'analyser, puis renvoyer la longueur, renvoyer un entier.
Cette fonction est en fait assez facile à implémenter car nous ne faisons que passer par un tableau.
Nous pouvons donc dire que dans count est
égal à zéro. Ceci est une variable locale.
Il ne peut être utilisé que dans cette fonction.
Maintenant, vous pouvez vous demander pourquoi nous ne pouvons pas utiliser la taille de l'opérateur parce
que la taille de l'opérateur va nous dire la taille de la chaîne, cela ne nous dira pas
combien de caractères se trouvent à l'intérieur de cette chaîne.
Mais tout ce que nous avons à faire est de créer
une boucle et de parcourir le tableau jusqu'à ce que nous atteignions le terminateur nul.
Nous pouvons donc regarder notre chaîne. Nous pouvons dire
wow le nombre de chaînes n'est pas égal au terminateur nul,
le terminateur nul est représenté à l'intérieur d'un seul caractère
comme une barre oblique inverse zéro.
Et nous pouvons utiliser l'opérateur pas égal parce que nous comparons avec des caractères.
Et nous n'avons qu'une seule chose dans le corps de cette instruction while plus
plus count, juste incrémenter le nombre.
Et puis nous voulons le retourner, nous disons simplement le nombre de retours et c'est tout.
C'est toute la fonction de longueur de chaîne. C'est assez facile car la chaîne
de caractères est à l'intérieur d'un tableau et
la chaîne se termine par un terminateur nul.
Donc, pour tester cela, nous pouvons commencer notre
méthode principale et nous pouvons créer des
caractères constants, il suffit de
dire le mot un
Jason.
Voici donc comment créer un tableau de caractères en c.
Vous n'êtes pas obligé d'avoir la constante ici, mais cela n'est pas modifié.
Utilisez le mot-clé char, le type de données char, l'identifiant, puis les crochets.
Il est préférable de ne pas spécifier la taille entre les crochets
car le compilateur c ajoutera automatiquement un terminateur nul.
Et puis vous juste après
l'opérateur d'affectation, vous mettez votre chaîne littérale entre les guillemets.
Nous allons créer un couple ici pour nous assurer que cela fonctionne.
Nous pouvons afficher des chaînes de caractères très facilement car nous pouvons simplement utiliser le
symbole pour cent s, sauf que ce que nous voulons vraiment afficher ici, ce
sont les longueurs. Nous allons donc utiliser
le pourcentage d.
Nous allons donc simplement imprimer les liens de ces trois
chaînes, pour cent d et nous aurons juste quelques espaces entre les deux, puis ajouter
un saut de ligne.
Et cela va simplement appeler la fonction de longueur de chaîne
pour chaque mot,
assez simple ici, et c'est tout. Alors maintenant, nous pouvons construire et tester et voir si cela fonctionne réellement.
Ce que nous devrions voir en sortie, c'est que nous devrions voir
la longueur de Jason qui est de 5, la longueur de ok qui est de 2 et
la longueur de tout ce qui semble être d'environ 8.
Nous avons donc ici 5, 2 et 8, ce qui semble correct.
C'est ainsi que vous pouvez écrire une longueur de chaîne. Passons à la fonction de concaténation.
La fonction de
concaténation va simplement prendre trois chaînes et deux constantes.
Et cela ne retournera rien. Il va simplement mettre
la chaîne résultante dans le premier paramètre.
Nous allons donc l'appeler concat. Nous allons avoir
un résultat, et nous allons avoir deux
chaînes, une que nous voulons concaténer deux et une autre que nous
voulons avoir juste une seule chaîne. Nous allons donc nommer la chaîne un, la chaîne deux.
Et nous y voilà. Et c'est notre déclaration de fonction.
Nous pouvons donc utiliser n'importe où avant qu'il ne soit défini.
Celui-ci devra également passer par le tableau. Il va juste falloir passer par deux tableaux et
au fur et à mesure que nous parcourons chacun d'eux, ajoutez à la chaîne résultante.
Nous allons créer quelques variables locales, que nous ne pouvons utiliser que dans cette
fonction, int I et j.
Et puis nous allons utiliser une boucle
for pour parcourir le tableau. Nous allons dire que je vaut 0.
Je devrais dire que Str sub 1 ou sub
n'est pas égal au terminateur
nul, puis incrémente également I.
Nous sommes familiers avec notre syntaxe
de boucle for où nous avons l'identificateur de boucle comme première chose.
Avant le premier point-virgule, la condition où nous sautons avant le deuxième
point-virgule, puis modifions la variable
de contrôle de boucle pour nous assurer que nous n'avons pas une boucle infinie.
Tout ce que nous faisons ici est de sauvegarder
les résultats, sous I est égal à str un sous I.
N'oubliez pas que ce sont des caractères, il est donc parfaitement normal d'utiliser ici une affectation égale.
Nous ne pouvons pas faire cela
dans les tableaux de caractères car les tableaux de caractères vous ne pouvez pas affecter de tableau à un tableau.
Il faudrait utiliser une copie str.
Donc, c'est copier la première chaîne.
Et maintenant, nous voulons concaténer la deuxième chaîne aux résultats,
donc nous ferions quelque chose de très très similaire, sauf que nous allons regarder
dans le deuxième tableau et nous allons nous assurer de le mettre au bon endroit dans le résultat.
Nous ferions donc quelque chose comme ça. On irait de j
à zéro, str à j n'est pas égal au terminateur nul ++ j.
Et vous verrez que le résultat est juste de dire je plus j, donc quoi que je termine.
Si j'ai ajouté dix caractères, il commencera
maintenant à ce dixième caractère car il est basé sur zéro, et
il ajoutera simplement j, donc 10 plus 0, 10 plus 1 et ainsi de suite.
Et c'est tout.
Une dernière chose que vous devez faire et qui est vraiment importante est d'ajouter ce terminateur nul.
Nous voulons donc dire résultat, je plus j, puis ajouter un
seul caractère, le terminateur nul, qui est
une barre oblique inverse zéro à l'intérieur d'un guillemet simple.
Et c'est notre fonction.
Nous n'avons rien à renvoyer à partir de
cette fonction car nous copions simplement str one vers str deux.
Alors testons ceci.
Ce que je m'attendrais à pouvoir faire sur celui-ci, c'est de le tester avec quelques personnages.
Nous utiliserons les caractères existants que nous avons, et nous
allons simplement en concaténer quelques-uns.
Nous devons donc créer un
autre résultat. Donc, nous allons
simplement dire résultat juste pour l'effacer.
Ici, nous allons dire que
nous devrons spécifier une taille pour ce premier.
Et donc nous allons simplement spécifier une taille de 50. Nous allons le limiter.
Donc, ces caractères constants devraient fonctionner.
Maintenant, nous allons juste dire printf, nous
allons imprimer une chaîne.
Donc, nous allons dire pour cent s et ensuite nous allons dire concat,
c'est ainsi que nous l'avons nommé. Nous allons transmettre les résultats,
puis le mot un et le mot deux.
Alors, qu'est-ce que cela devrait afficher en
sortie, et nous nous assurerons de le mettre sur quelques nouvelles lignes.
Cela devrait s'afficher comme sortie Jason okay. Donc concat ne renvoie aucune donnée, donc je ne
peux pas la mettre directement dans printf.
Ce que je dois faire, c'est l'appeler, puis afficher le résultat.
Alors là, nous appelons concat.
Tout est mis dans le résultat et nous affichons le résultat.
Donc, encore une fois, lorsque nous exécutons cela, nous
devrions voir Jason bien et nous le faisons.
La troisième fonction
que nous voulons implémenter est une fonction de comparaison pour vérifier si deux chaînes sont égales.
Cette fonction doit renvoyer un booléen.
Nous voulons donc inclure notre booléen standard.
Nous pouvons donc utiliser des valeurs booléennes et vraies et fausses.
Et cela sera en fait défini comme des chaînes égales.
Cela va prendre un tableau de caractères constants, s1 et un
autre pour vérifier si deux
chaînes sont égales.
Juste pour m'assurer d'avoir inclus le bon en-tête, je vais essayer de construire cela
et je pense que je l'ai fait parce que maintenant je suis
capable d'utiliser le mot-clé bool parce que j'ai inclus ceci et que je peux également utiliser true false.
Alors implémentons ces chaînes égales.
Ce sera à peu près la même
chose en parcourant simplement le tableau et en vérifiant chaque caractère.
Nous allons donc créer
quelques variables locales I égal à 0 pour notre boucle initialisée à 0.
Dans un booléen, cela nous dit simplement
s'ils sont égaux parce que c'est ce que nous allons retourner, quelque chose comme est égal. Et nous pourrions en fait initialiser ceci à false.
Ce que nous voulons faire en premier, c'est que nous voulons obtenir le décompte.
Nous voulons voir quelle est la taille de
ces deux éléments. Nous pouvons donc avoir une boucle
while parce que nous avons besoin du décompte afin de
regarder la taille essentiellement pour simplement
vérifier cette terminaison nulle.
Nous allons donc supposer que les chaînes que nous transmettons sont de la même taille.
Nous pouvons donc écrire une simple boucle while. Vous pouvez également écrire des déclarations if.
J'ai en quelque sorte tout incorporé
dans une boucle while sont mes comparaisons en utilisant les opérateurs logiques.
Vous n'êtes pas obligé d'utiliser des opérateurs logiques. Vous pouvez utiliser une instruction if et parcourir
l'intégralité d'une deuxième chaîne.
Mais ici, ce que j'ai fait, c'est que j'ai dit alors
que s1 sub I est égal à s2 sub I
et qu'ils ne sont pas égaux à des terminateurs nuls.
Parce que s'ils sont égaux à
des terminateurs nuls, nous voulons sauter si l'un ou l'autre est un terminateur nul.
Alors maintenant, nous disons plus plus moi. Et puis la dernière chose que nous devons faire est
simplement de vérifier si ce sont des terminateurs nuls. Et s'ils le sont, vous pouvez définir votre variable
booléenne pour renvoyer les bonnes données.
Donc, ici, nous pouvons dire si s1 sub I est
égal à un terminateur nul et
s2 sub est égal à un terminateur nul, définissez notre variable
booléenne est égale et nous voulons le renvoyer.
Et puis dites simplement que le retour est égal.
Et pour tester cela, nous devrons tester une bonne chaîne et une mauvaise chaîne.
Alors allons-y et disons des chaînes égales.
Je vais imprimer juste la valeur entière du booléen, donc pour
cent d et nous allons dire des chaînes égales ici, cela retourne quelque chose afin
que nous puissions mettre
cela dans l'expression d'impression égal à la chaîne. Je veux juste m'assurer que
les chaînes sont
égales, puis nous passerons dans Jason virgule Jason.
Et nous l'appellerons et cette fois
nous dirons celui de Jason.
Et le premier doit renvoyer un, le second pour
renvoyer zéro, un représente vrai, zéro représente faux.
Lorsque nous exécutons ceci, nous voyons un
et zéro. Un pour vrai et zéro pour faux sauf qu'il
est difficile à lire car nous n'avons pas de saut de ligne. Alors ajoutons un saut de ligne
et juste pour vous montrer à nouveau.
Maintenant, nous voyons un zéro,
vrai faux. Jason Jason est égal l'un à l'autre.
Jason de Jason n'est pas égal.
Voici donc quelques fonctions rapides
dont vous pouvez maintenant apprendre, en savoir plus sur les tableaux de caractères
et comment les chaînes sont représentées avec ce concept.
Merci. Je vais également fournir le fichier source, afin que vous puissiez l'examiner plus en détail.
J'espère que cela vous a aidé dans votre mission.