begin process at 2012 05 27 18:00:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > QUELQUES ALGORYTHMES DE STRING.H [ANSI C++]

QUELQUES ALGORYTHMES DE STRING.H [ANSI C++]


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Initié Date de création :21/04/2002 Date de mise à jour :21/04/2002 16:16:58 Vu :8 272

Auteur : mmuller57

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Quelques algorythme de string.h : strlen, strcmp, et strcat.

Source

  • //******************************************************************************
  • //
  • // AUTEUR : MULLER Maxime
  • //
  • // COPYRIGHT : OpenSource MULLER Maxime 2001 - 2002
  • //
  • // PROJET : Manipulation des chaines de caracteres.
  • //
  • // PROPRIETES : ...
  • //
  • // DESCRIPTION : ...
  • //
  • //******************************************************************************
  • /* Prototypes de fonctions et variables globales. */
  • int longueure_chaine(char * chaine);
  • bool compare_chaine(char * chaine_1, char * chaine_2);
  • void concat_chaine(char * chaine_1, char * chaine_2);
  • /* Definitions des fonctions. */
  • int longueure_chaine(char * chaine)
  • {
  • int i = 0;
  • while(chaine[i] != '\0') // Tant que l'on a pas atteint le caractère de fin
  • { // chaine, ajoute 1 à i.
  • i++;
  • }
  • return i;
  • }
  • bool compare_chaine(char * chaine_1, char * chaine_2)
  • {
  • int lon_ch1, lon_ch2, i;
  • i = 0;
  • lon_ch1 = longueure_chaine(chaine_1); // Collecte les longueures des 2 chaines
  • lon_ch2 = longueure_chaine(chaine_2); // avant de comparer celles-ci.
  • if(lon_ch1 != lon_ch2) // Si la longueure des 2 chaines est differente
  • { // , alors les 2 chaines sont differentes.
  • return false;
  • }
  • else
  • {
  • for(i = 0; i <= lon_ch1; i++) // Entamme une boucle de 0 jusqu'a la longeure d
  • { // -es 2 chaines.
  • if((chaine_1[i] == chaine_2[i])) // Verifie si les 2 chaines contiennent les
  • { // memes caracteres.
  • if(i == lon_ch1) return true; // Verifie que la chaine de caractere a ete
  • // parcourue integralement.
  • }
  • else // Si les 2 chaines ne contiennent pas les memes caracteres alors elles
  • // sont differentes.
  • {
  • return false;
  • }
  • }
  • }
  • }
  • /* Un grand merci à Thaeron, sans lui j'aurais toujours
  • de gros problèmes avec cette fonction. */
  • void concat_chaine(char * chaine_1, char * chaine_2)
  • {
  • int lon_ch1, lon_ch2, i;
  • // Collecte les longueures des 2 chaines.
  • lon_ch1 = longueure_chaine(chaine_1);
  • lon_ch2 = longueure_chaine(chaine_2);
  • i = 0;
  • // Parcours de la chaîne 2 jusqu'a ce qu'elle soit parcourue en entier
  • for(i = 0;i < lon_ch2; i++)
  • {
  • chaine_1[lon_ch1 + i] = chaine_2[i]; // Concaténation des 2 chaînes
  • }
  • }
//******************************************************************************
//
//     AUTEUR : MULLER Maxime
//
//     COPYRIGHT : OpenSource MULLER Maxime 2001 - 2002
//
//     PROJET : Manipulation des chaines de caracteres.
//
//     PROPRIETES : ...
//
//     DESCRIPTION : ...
//
//******************************************************************************

/* Prototypes de fonctions et variables globales. */

int  longueure_chaine(char * chaine);
bool compare_chaine(char * chaine_1, char * chaine_2);
void concat_chaine(char * chaine_1, char * chaine_2);

/* Definitions des fonctions. */

int longueure_chaine(char * chaine)
 {
  int i = 0;

  while(chaine[i] != '\0') // Tant que l'on a pas atteint le caractère de fin
   {                       // chaine, ajoute 1 à i.
    i++;
   }

  return i;
 }

bool compare_chaine(char * chaine_1, char * chaine_2)
 {
  int lon_ch1, lon_ch2, i;
  i = 0;

  lon_ch1 = longueure_chaine(chaine_1); // Collecte les longueures des 2 chaines
  lon_ch2 = longueure_chaine(chaine_2); // avant de comparer celles-ci.

  if(lon_ch1 != lon_ch2) // Si la longueure des 2 chaines est differente
   {                     // , alors les 2 chaines sont differentes.
    return false;
   }
  else
   {
    for(i = 0; i <= lon_ch1; i++) // Entamme une boucle de 0 jusqu'a la longeure d
     {                            // -es 2 chaines.

      if((chaine_1[i] == chaine_2[i])) // Verifie si les 2 chaines contiennent les
       {                               // memes caracteres.

        if(i == lon_ch1) return true;  // Verifie que la chaine de caractere a ete
                                       // parcourue integralement.

       }
      else // Si les 2 chaines ne contiennent pas les memes caracteres alors elles
           // sont differentes.
       {
        return false;
       }
     }
   }
 }
 
/* Un grand merci à Thaeron, sans lui j'aurais toujours
   de gros problèmes avec cette fonction. */

void concat_chaine(char * chaine_1, char * chaine_2)
 {
  int lon_ch1, lon_ch2, i;
  
  // Collecte les longueures des 2 chaines.
  
  lon_ch1 = longueure_chaine(chaine_1);
  lon_ch2 = longueure_chaine(chaine_2);
  i = 0;
  
  // Parcours de la chaîne 2 jusqu'a ce qu'elle soit parcourue en entier
  
  for(i = 0;i < lon_ch2; i++)
   {
    chaine_1[lon_ch1 + i] = chaine_2[i];  // Concaténation des 2 chaînes
   }
 }
 
 

 

 Conclusion

Aucun bug connu pour le moment.


 Sources du même auteur

Source avec Zip PROBABILITÉS ET PROGRAMMATION [ANSI-C++]
[TC++ 3.1] PROTÉGER L'ACCÈS DE VOTRE ORDINATEUR
[DEV C++] MODIFIER LE STYLE D'UNE FENÊTRE DÉJA AFFICHÉE
Source avec Zip Source avec une capture CRYPTAGE SIMPLE [DEV C++]
MANIPULATION DES FICHIERS EN ANSI-C++ [ANSI-C++]

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

Commentaires et avis

Commentaire de jmecodol le 29/05/2006 17:18:19

merci,
ca va m'aider pour un projet de fin d'année .
on gagne énormément de temp a partager (a bas vivendi!) .

Commentaire de jourdantoinou le 04/03/2011 09:41:27

1 erreur incorrigible ?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales