Strcat de plusieur chaines en une fonction

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 064 fois - Téléchargée 34 fois

Contenu du snippet

Une fonction remplace plein d'strcat.

Source / Exemple :


#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;
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
41
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
19 mars 2010

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
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
euh g mit 8 ;)
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
moi je prefere strcat parceque c'est plus facile d'exploter une string avec une fonction que pleins de variables!!
aller 7/10 ;)
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

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


;)


@++;
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
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) !
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.