GEF 243B Programmation Informatique Applique - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

GEF 243B Programmation Informatique Applique

Description:

Les Strings en g n rale et comment ils sont trait s en C. Les Strings de longueur fixe et ... En appelant itoa(), outString doit pointer de la m moire allou e ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 27
Provided by: abea7
Category:

less

Transcript and Presenter's Notes

Title: GEF 243B Programmation Informatique Applique


1
GEF 243BProgrammation Informatique Appliquée
  • Strings

2
Revue
  • Que font les jetons de formatage suivants dans
    lénoncé printf?
  • d
  • c
  • p
  • 5.2f
  • s
  • Quest-ce quun type dérivé?

3
Synopsis
  • Les Strings en générale et comment ils sont
    traités en C
  • Les Strings de longueur fixe et variable
  • Tableaux et strings
  • Pointeurs et strings
  • Le caractère délimitant
  • Quelques des fonctions les plus utiles en C pour
    les strings

4
"Généralités"
  • Jusquà maintenant nous avons traité les strings
    de façon superficiel.
  • Nous comprenons quun string représente une
    chose dans lenvironnement que lon nomme
  • Nous nommons les choses pour faire labstraction
    de ce quelles sont
  • La pluparts des langages fournissent un type
    spécifique pour les strings tel que Pascal ou
    Java
  • En C on utilise deux types dérivés pour
    entreposer les strings
  • Tableaux (Arrays)
  • Pointeurs

5
"Généralités\0"
  • Un string est une unité logique de stockage
    dérivée du type de stockage physique char
  • Ce qui est intéressant avec les strings cest
    quils peuvent et doivent varier en longueur
  • Surnom pas tous de la même longueur
  • Marque de voiture
  • Couleur
  • Comment sélectionnons-nous le bon type dérivé et
    la structure de données approprié?

6
"Généralités\0"
  • En fin de compte, les strings viennent en deux
    saveurs longueur fixe et variable
  • Longueur fixe
  • Tableau de caractères qui stocke toujours le même
    nombre de caractères
  • char codeDePièce5 //code de 5 alphanum
  • Pointeur à un littéral de longueur fixe
  • char province "ON" //Abrévi de 2 char
  • char province "AB" //3 char array

7
"Généralités\0"
  • Longueur variable
  • Tableau de caractères avec délimiteur
  • char surnom30 "\0" //string vide
  • surnom0 "B"
  • surnom1 "e"
  • surnom2 "a" //le reste de mon nom
  • surnom8 "u"
  • surnom9 "\0" //Jai fini

8
"Généralités\0"
  • Longueur variable
  • Pointeur à un littéral de longueur maximal
  • char nom "Superfragelisticespialladotious\0"
  • //Ceci est dangereux pcq vous devez trouver
  • //le nom le plus long et planifier lutilisation
  • // Le \0 nest pas requis et est ajouté
  • // automatiquement par le compilateur pour les
  • //double guillemets
  • Cest presque identique à
  • char nom "Superfragelisticespialladotious"

9
"Généralités\0"
  • Dans les deux strings de longueur variable que
    nous avons utilisé, on a un \0
  • \0 est utilisé en C comme arrêt logique pour dire
    à nos fonctions que nous avons fini.
  • Nous aurions pu utiliser nimporte quel caractère
    dans lalphabet. ASCII fournit 128 caractères
  • Nous aurions pu utiliser un espace ou la lettre a
  • Mais le caractère naurait pas pu être utilisé
    pour autre but que de signifier la fin logique du
    string

10
Une chose logique à faire
  • Donc pourquoi dire que un string est un type
    dérivé
  • logique

Forouzan Figure 11-6
Fait partie du Tableau mais pas du string
Stockage logique un string qui finit avec \0
Stockage physique un tableau de 11 char
11
Des choses spéciales pour les strings
Figure 11-4
12
Des fonctions utiles pour les strings
  • de stdio.h
  • printf
  • gets
  • fgets
  • puts
  • fputs
  • de string.h
  • strcat
  • strncat
  • strlen
  • itoa

13
printf un char à la fois
Figure 11-8
14
printf un char à la fois avec pointeur
Figure 11-9
15
printf un char à la fois avec pointeur
Figure 11-10
16
Figure 11-11
17
Figure 11-12
18
Figure 11-18
19
La longueur dun string
  • strlen()
  • strlen retourne le nombre de caractères dans une
    string avant le premier \0
  • sizeof() va retourner le nombre de caractères
    alloués pour le tableau (array)
  • NOTE sizeof et strlen ne retourne PAS la même
    chose!!

20
La longueur dun string
  • include ltstdio.hgt
  • include ltstdlib.hgt
  • include ltstrings.hgt
  • int main(int argc, char argv)
  • char test25 "This is a test"
  • printf(s\n,test)
  • printf("strlen() d sizeof d\n",strlen(test),s
    izeof(test))
  • getch()
  • return 0

21
Comparer deux strings
  • strcmp(char s1,char s2)
  • Compare deux strings
  • Retourne
  • 0 si égale
  • -1 if s1gts2
  • 1 if s1lts2
  • Peut être utilisé pour trier en ordre alphabétique

22
itoa(int value, char outString, int radix)
  • printf, scanf, et sprintf demande beaucoup de
    mémoire!
  • Pour les systèmes imbriqués comme le robot les
    petites fonctions avec moins de fonctionnalités
    sont utilisées
  • itoa
  • Convertie les valeurs integer en string et met le
    résultat dans outString
  • La valeur peut être converti en binaire, décimal,
    ou hexadécimal comme indiqué par le radix

23
itoa(int value, char outString, int radix)
  • outString est un pointeur dans la définition de
    la fonction
  • En appelant itoa(), outString doit pointer à de
    la mémoire allouée

char convertedInt itoa(17,convertedInt,10)
// Erreur pas de mémoire allouée
char convertedInt10 itoa(17,convertedInt,10)
OK
24
Danger Will Robinson!
  • Aucune des fonctions vérifie si vous avez assez
    de mémoire allouée!
  • Vous pouvez causer un Écrasement du noyau sur la
    brique si vous écrivez sur un string qui est
    initialisée ou trop court!
  • En Dev-C vous allez avoir un erreur dexécution
    si vous allez en dehors dun tableau de char!
  • En Dev-C cest beaucoup plus facile de déboguer
    un programme avec des pointeurs!!!

25
Il y a bien plus de fonctions pour les string
  • Forouzan Appendice F
  • Ou le site gnu
  • http//www.gnu.org/software/libc/
  • Faites un recherche sur votre ordi ou google pour
    les fonctions de string
  • \0 est votre ami et il fonctionne.
  • Vérifiez les fonctions de string dur le site web
    du cours et lisez les descriptions avant la
    prochaine période de labo.

26
Quiz Time
  • Quelles sont les deux types de strings
  • Pourquoi dit-on que les strings sont un type
    dérivé logique?
  • Comment est-ce que le stockage logique est
    implémenté?
  • Donnez le code pour convertir la valeur integer
    127 en string décimal.
Write a Comment
User Comments (0)
About PowerShow.com