begin process at 2012 02 13 00:16:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.Net

 > STRCAT DE PLUSIEUR CHAINES EN UNE FONCTION

STRCAT DE PLUSIEUR CHAINES EN UNE FONCTION


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.Net Niveau :Débutant Date de création :14/06/2003 Date de mise à jour :14/06/2003 08:24:13 Vu :1 922

Auteur : JCDjcd

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


 Description

Une fonction remplace plein d'strcat.

Source

  • #include <stdio.h>
  • #include <conio.h>
  • #include <stdarg.h>
  • #include <string.h>
  • // ---------------------------------------------------------
  • // Fais des 'strcat' a la suite sur la chaine 'pOut'
  • // Les chaines ajoutees sont passees en argument
  • // La derniere chaine doit etre '""' (vide)
  • // Retourne le nombre de chaine ajoutees
  • int myStrcat(char *pOut,...)
  • {
  • va_list listStringToAdd;
  • int nbStringAdded;
  • // initialisation
  • va_start(listStringToAdd,pOut);
  • nbStringAdded = 0;
  • // on commence a balayer toutes les chaines jusqu'a ""
  • do
  • {
  • char *stringToAdd;
  • // on obtient la chaine a ajouter
  • stringToAdd = va_arg(listStringToAdd,char *);
  • // si l'on doit arreter
  • if(*stringToAdd == '\0')
  • {
  • break;
  • }
  • // on l'ajoute
  • strcat(pOut,stringToAdd);
  • nbStringAdded ++;
  • }while(1);
  • // on referme gentillement
  • va_end(listStringToAdd);
  • return nbStringAdded;
  • }
  • // ---------------------------------------------------------
  • int main(int argc,char **argv)
  • {
  • char buf[256] = "Coucou ici la premiere chaine\n";
  • int i;
  • i = myStrcat(buf,
  • "--- AJOUTS ---\n",
  • "hello world\n",
  • "vive la programmation en C/C++ !\n",
  • "www.cppfrance.com\n",
  • "--- FIN ---\n",
  • ""
  • );
  • printf("\n%d chaine(s) ajoutee(s)\n\n%s\n",i,buf);
  • getch();
  • return 0;
  • }
#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <string.h>
// ---------------------------------------------------------
// Fais des 'strcat' a la suite sur la chaine 'pOut'
// Les chaines ajoutees sont passees en argument
// La derniere chaine doit etre '""' (vide)
// Retourne le nombre de chaine ajoutees
int myStrcat(char *pOut,...)
{
va_list listStringToAdd;
int     nbStringAdded;
// initialisation
va_start(listStringToAdd,pOut);
nbStringAdded = 0;
// on commence a balayer toutes les chaines jusqu'a ""
do
  {
  char *stringToAdd;
  // on obtient la chaine a ajouter
  stringToAdd = va_arg(listStringToAdd,char *);
  // si l'on doit arreter
  if(*stringToAdd == '\0')
    {
    break;
    }
  // on l'ajoute
  strcat(pOut,stringToAdd);
  nbStringAdded ++;
  }while(1);
// on referme gentillement
va_end(listStringToAdd);
return nbStringAdded;
}
// ---------------------------------------------------------
int main(int argc,char **argv)
{
char buf[256] = "Coucou ici la premiere chaine\n";
int  i;

i = myStrcat(buf,
                  "--- AJOUTS ---\n",
                  "hello world\n",
                  "vive la programmation en C/C++ !\n",
                  "www.cppfrance.com\n",
                  "--- FIN ---\n",
                  ""
                  );
printf("\n%d chaine(s) ajoutee(s)\n\n%s\n",i,buf);

getch();
return 0;
} 



 Sources du même auteur

Source avec Zip Source avec une capture COLORATION SYNTAXIQUE
Source avec Zip Source avec une capture ORBITES DES SATELLITES GPS
Source avec Zip Source avec une capture DESSIN D'ARBRES
Source avec Zip Source avec une capture PROGRAMMATION LINEAIRE
Source avec Zip EXTENSION DE CORPS (MATH)

 Sources de la même categorie

Source avec Zip Source avec une capture ANALYSEUR LEXICAL par Donald180v
Source avec Zip Source avec une capture MAP_MAKER_JEU par seekplus
Source avec Zip Source avec une capture Source .NET (Dotnet) EMISSION D'UN OCTET SUR LE PORT SÉRIE - CLASSE SERIALPORT par jmchatelet01
Source avec Zip Source .NET (Dotnet) RESOLV EQU DE DEGRES N par darckangel731
Source avec Zip Source avec une capture Source .NET (Dotnet) INTEROP XCHAT / .NET : CHARGEUR DE PLUGINS MANAGÉS par TeBeCo

Commentaires et avis

Commentaire de BruNews le 14/06/2003 10:57:49 administrateur CS

Salut,
interessant pour les debutants au niveau du va_list, par contre faudrait leur preciser que  l'exemple fournit est mortel pour les perfs.
ciao...

Commentaire de NitRic le 15/06/2003 05:39:44

sprintf(buffer, "%s%s%s%s%s", buffer, chaine1, chaine2, chaine3, chaine4);

génial le strcat() de plusieurs chaines nah!? une ligne ... et ben ...
Bon exemple quand même, moi perso je préfère sprintf()  ;)



~(.::  NitRic  ::.)~

Commentaire de JCDjcd le 15/06/2003 10:25:46

Tout a fais d'accord !
Une precision : tu mais deux fois 'buffer' en argument, cela peut des fois est tres maladroit de ta part !

Et le but de cet exemple est de voir aussi les '...' va_list (ect) !

Commentaire de NitRic le 15/06/2003 14:55:56

Certe, c'est pour ca que j'ai dit: Bon exemple quand même, moi perso je préfère sprintf()  ;)


;)


@++;

Commentaire de CCJ le 29/09/2005 20:53:09

moi je prefere strcat parceque c'est plus facile d'exploter une string avec une fonction que pleins de variables!!
aller 7/10 ;)

Commentaire de CCJ le 29/09/2005 20:53:30

euh g mit 8 ;)

Commentaire de ordiman85 le 08/05/2006 17:26:31

Je trouve ce code très intéressant...
myStrcat(buffer, chaine1, chaine2, chaine3, chaine4, "");
est un peu plus court que :

sprintf(buffer, "%s%s%s%s%s", buffer, chaine1, chaine2, chaine3, chaine4);

Il doit quand même y avoir un moyen de raccourcir et d'accélérer cette fonction

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,139 sec (4)

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