7
#define Va_start(a,b) va_start(a)
10
#define Va_start(a,b) va_start(a,b)
14
#include "gestion_memoire.h"
15
#include "buffer_dynamiques.h"
16
#include "utilitaires.h"
18
#define TAILLE_INIT_TABLEAU 10
20
void liberer_tableau_de_pointeurs(tableau,taille)
25
for(compteur=0 ; compteur < taille ; compteur ++)
26
liberer(tableau[compteur]);
31
il faut que, comme avec strcat, la chaine ait la
32
place pour accepter le caractere supplementaire.
34
void concat_caractere(chaine,caractere)
38
chaine[strlen(chaine)+1]='\0';
39
chaine[strlen(chaine)]=caractere;
43
il faut que, comme avec strcat, la chaine ait la place pour
44
accepter la chaine et le caractere supplementaires
46
void strcat_plus_caractere(chaine_a_remplir,chaine_a_copier,caractere)
47
char *chaine_a_remplir;
48
char *chaine_a_copier;
51
strcat(chaine_a_remplir,chaine_a_copier);
52
concat_caractere(chaine_a_remplir,caractere);
56
* stores the set of strings coded in first + liste
57
* in a dynamically allocated array
60
tableau_avec_taille convertir_nombre_arbitraire_de_chaines_en_tableau(first,liste)
64
tableau_avec_taille resultat;
68
resultat.tableau=gbd_creer_buffer_dynamique_type(char *,TAILLE_INIT_TABLEAU,allouer,reallouer,liberer,NULL);
69
resultat.tableau=gbd_augmenter_buffer_dynamique(resultat.tableau,1);
72
while( chaine != NULL)
74
resultat.tableau[resultat.taille++]=dupliquer_chaine(chaine);
75
resultat.tableau=gbd_augmenter_buffer_dynamique(resultat.tableau,1);
76
chaine=va_arg(*liste,char *);
78
resultat.tableau[resultat.taille]=NULL;
84
* unused function ....
89
char *concatenation_plusieurs_chaines_unused (char * first, ...)
91
char *concatenation_plusieurs_chaines_unused (va_alist) va_dcl
96
char *chaine_resultat;
97
tableau_avec_taille temporaire;
101
va_start(liste,first);
105
first = va_arg(liste, char *);
110
temporaire=convertir_nombre_arbitraire_de_chaines_en_tableau(first,&liste);
111
for(compteur=0;compteur<temporaire.taille;compteur++)
112
nb_caracteres+=strlen(temporaire.tableau[compteur]);
114
chaine_resultat=allouer_type(char,nb_caracteres+1);
115
*chaine_resultat='\0';
116
for(compteur=0;compteur<temporaire.taille;compteur++)
117
strcat(chaine_resultat,temporaire.tableau[compteur]);
119
liberer_tableau_de_pointeurs(temporaire.tableau,temporaire.taille);
120
gbd_liberer_mixte(temporaire.tableau);
124
return chaine_resultat;
128
char *concatener_deux_chaines(chaine1,chaine2)
132
char *chaine_resultat;
133
chaine_resultat=allouer_type(char,strlen(chaine1)+strlen(chaine2)+1);
134
strcpy(chaine_resultat,chaine1);
135
strcat(chaine_resultat,chaine2);
136
return chaine_resultat;
140
char *dupliquer_chaine(chaine_source)
143
char *chaine_resultat=allouer_type(char,strlen(chaine_source)+1);
144
strcpy(chaine_resultat,chaine_source);
146
return chaine_resultat;