dark_naruto25
Messages postés127Date d'inscriptionmardi 23 août 2005StatutMembreDernière intervention 9 mai 2011 14 déc. 2005 à 15:05
euh, il faut revoir ta bible du C++, parce que c'est quelque chose de très bête
une boucle qui lit caractère par caractère ta chaine, et rentre les caractères dans un tableau, quand ';' est rencontré tu change la case du tableau... rien de plus simple.
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 15 déc. 2005 à 19:44
RE ,
C'est encore moi,
En testant, j'ai remarqué que si tu supprimais 2 nombres et bien il les remplacait par ;4
ex : supprime 0 et 3:
rend : 1;2;4;4
Voici la version corrigée. Une amélioration à aussi été apportée, plus
besoin de déclarer un buffer (new_phrase) celui-ci est directement
déclaré dans la procédure :
void l(char *phrase,char caract,int D_iNbr){
char Car;
char *new_phrase,*pt1=phrase,*pt2;
new_phrase=(char*)malloc(sizeof(char)*D_iNbr);
pt2=new_phrase;
while(*phrase!='\0'){
if(*phrase==caract){
phrase++;
if(*phrase==';'){
phrase++;
}
}else{
Car=*phrase;
*new_phrase=Car;
phrase++;
new_phrase++;
}
}
*new_phrase='\0';
strcpy(pt1,pt2);
}
La nouvelle variable demandée en paramètre est D_iNbr qui doit contenir la taille de la phrase à modifier. Voila c'est tout.
Dernière chose, si ta phrase vas jusque 10 et plus.
ex : 0;1;2;3;4;5;6;7;8;9;10
Sache que si par exemple tu veut supprimer 1 et 0 le 1 et le 0 du 10
seront supprimer aussi. Ci tu veut pas, modifie le 1er if en ajoutant
un && *(phrase+1)==';' .
Voila, maintenant je te laisse a ton code mdr, j'estime en avoir fait assez.