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
merci !
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); }
Partager