Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 046 fois - Téléchargée 33 fois
#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; }
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
aller 7/10 ;)
;)
@++;
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) !
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.