Bonjour,

j'ai un petit soucis avec une fonction de fusion de deux champs en C...

En entrée, on donne les deux champs qu'on doit concaténer + la longueur de ces deux champs + la longueur du champ de sortie
En sortie, on obtient le champ concatené et sa longueur

En prenant l'exemple suivant, j'ai un soucis :
champ1 = "Voiture" (longueur = 7) et
champ2 = "5556661" (longueur = 8)
et taille champ de sortie = 45
Lors de la fusion le dernier caractère le "1" disparaît... :/
Je ne comprends pas pourquoi...
A noter que cela fonctionne (pas d'effacement de dernier caractère) si on envoie "555666" (en gardant longueur = 8)

J'imagine qu'il doit y avoir un problème de taille...

voici la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int FUSADR(char * strin1, char * strin2, char * strout, int * pilen1, int * pilen2, int * polen) 
{ 
     int i,slen; 
     int olen =  READINT(polen); 
     int ilen1 = READINT(pilen1); 
     int ilen2 = READINT(pilen2);
 
     for(i = 0; i<ilen1; i++) { 
         if(strin1[i] == ',') 
            strin1[i] = 0; 
     } 
     slen=strlen(strin1)+strlen(strin2); 
     if (slen > olen) 
        return(0); 
     strcpy(strout,strin1); 
     strcat(strout,", "); 
     strcat(strout,strin2); 
     slen=strlen(strout); 
     strout[slen]=' '; 
     return(1); 
}
merci !