Comment utiliser des pointeurs et des cordes dans la programmation de c

Le langage de programmation C manque une variable de chaîne, mais il a le tableau de caractères, qui est effectivement la même chose. Comme un tableau, une chaîne en C peut être complètement tordu, serrée, et abusée par l'utilisation de pointeurs. Il est un sujet beaucoup plus intéressant que de jouer avec des tableaux numériques.

Sommaire

Comment utiliser des pointeurs pour afficher une chaîne

Vous êtes le plus susceptible familiariser avec l'affichage d'une chaîne en C, probablement à l'aide de la fonction puts () ou printf (). Cordes, aussi, peuvent être affichés un caractère un temps par laborieux à travers un réseau.

BONJOUR, STRING

#include int main () {échantillon de char [] = "D'où me viendra le secours? n" index -int = 0-tout (échantillon [index] = ' 0'!) {putchar (échantillon [index]) - Indice ++ -} return (0) -}

Le code montré dans Bonjour, String est tout à fait légitime de code C, valable pour créer un programme qui affiche une chaîne. Mais il n'a pas utiliser des pointeurs, il le fait?

Exercice 1: Modifiez le code source à partir Bonjour, String, remplaçant la notation de tableau avec la notation de pointeur. Éliminer la variable d'index. Vous avez besoin pour créer et initialiser une variable pointeur.

L'évaluation de la boucle while in Bonjour, String est redondant. Le caractère nul est évaluée comme fausse. Donc, l'évaluation pourrait être réécrite comme

while (échantillon [index])

Tant que l'élément du tableau référencé par échantillon [index] est pas un caractère nul, la boucle tourne.




Exercice 2: Modifier l'évaluation de la boucle while dans votre solution pour l'exercice 1, éliminant la comparaison redondante.

Exercice 3: Continuer à travailler sur votre code, et cette fois d'éliminer les déclarations dans la boucle while. Placez toute l'action dans l'évaluation de l'instruction while. Pour des raisons de référence, la fonction putchar () renvoie le caractère qui est affiché.

Comment déclarer une chaîne en utilisant un pointeur

Voici une astuce effrayant vous pouvez tirer en utilisant des pointeurs, celui qui vient avec une cargaison de prudence. Considérons un pointeur annonce un String.

A POINTER ANNONCE UNE CHAÎNE

#include int main () {char * échantillon = "D'où me viendra le secours? n" -Pendant (putchar (* échantillon ++)) - retour (0) -}

Dans un pointeur annonce une chaîne, la chaîne qui est affiché est créé par l'initialisation d'un pointeur. Il est une construction qui semble étrange, mais il est quelque chose que vous êtes témoin souvent dans le code C, en particulier avec des cordes. (Vous ne pouvez pas utiliser cette convention pour initialiser un tableau numérique.)

Exercice 4: Copiez le code source à partir d'un pointeur annonce une chaîne dans votre éditeur. Construire et exécuter.

La cargaison de prudence dans un pointeur annonce une chaîne, et chaque fois que vous utilisez un pointeur de déclarer directement une corde, est que la variable de pointeur ne peut pas être manipulé ou bien la chaîne est perdue.

Par exemple, dans un pointeur annonce une chaîne, la échantillon variable est utilisée dans la ligne 7 pour parcourir la chaîne dans le cadre de la fonction de putchar (). Oops. Si vous utilisez wantto échantillon plus tard, dans le code, il ne serait plus référencer le début de la chaîne.

Lors de la déclaration d'une chaîne à l'aide d'un pointeur, ne plaisante pas avec la variable pointeur ailleurs dans le code.

La solution est de sauver adresse initiale du pointeur ou tout simplement utiliser un second pointeur de travailler sur la chaîne.

Exercice 5: Fixer le code dans un pointeur annonce une chaîne de sorte que la échantillon la valeur de la variable est enregistré avant la boucle while exécute et est ensuite restauré par la suite. Ajouter un puts (échantillon) vers le code après la boucle while se fait exécuter, de prouver que l'adresse initiale de la variable est restaurée.

Comment trier des chaînes

Prenant ce que vous savez sur le tri dans le langage C, vous pouvez probablement élaborer un programme de chaîne de tri décent. Ou, à tout le moins, vous pouvez expliquer comment il est fait. C'est génial! Mais il est beaucoup de travail.

Quoi de mieux quand il vient à trier des chaînes est de ne pas trier les chaînes du tout. Non, à la place, vous triez un tableau de pointeurs référençant les cordes. Tri Cordes, tentative initiale montre un exemple.

Trier des chaînes, première tentative

#include int main () {char * fruits [] = {"abricot", "banane", "ananas", "pomme", "kaki", "poire", "bleuet"} - char * temp-int a, b, (a = 0-alt; 6-A ++) x-pour pour (b = a + 1-BLT; 7-b ++) si (* (fruit + un)> * (fruit + b)) {temp = * (fruit + a) - * (fruit + a) = * (fruit + b) - * (fruit + b) = tentation} pour (x = 0-XLT; 7-x ++) puts (fruits [x]) - retourner (0) -}

Exercice 6: Tapez le code source à partir de trier des chaînes, première tentative dans votre éditeur. Construire et exécuter pour assurer que les chaînes sont correctement triées.

Eh bien, il n'a probablement pas travailler. Il peut avoir, mais si la liste est triée ou modifié en aucune façon, il est une conséquence inattendue et certainement pas reproductible.

Le problème est dans la ligne 19. Vous ne pouvez pas comparer les chaînes en utilisant l'opérateur>. Vous pouvez comparer les caractères individuels et vous pouvez alors trier la liste en fonction de ces personnages, mais la plupart des humains préfèrent mots triés sur toute leur longueur, et pas seulement le premier caractère.

Exercice 7: Modifier votre code source, et utiliser la fonction strcmp () pour comparer des chaînes pour déterminer si elles ont besoin d'être échangé.


» » » » Comment utiliser des pointeurs et des cordes dans la programmation de c