[C] creer une fonction strdel

creer une fonction strdel [C] - Programmation

Marsh Posté le 10-03-2001 à 03:16:52    

g un GROOOOOOS probleme :sweat:  
je veux enlever un caractere demandé par l'utilisateur dans une chaine de caractere (donné par l'utilisateur)
 
donc le principe est simple:
 
je fais une boucle pour vérifier chaque caractere de la chaine donnée. et si le caratere est différent de celui à enlever, je le rajoute à la fin de d'une autre chaine ("concaténer" ou en anglais "append" ) et j'affiche ce que ca donne...
 
sauf que la boucle ne s'effectue seulement une fois je crois.. ou bien le strcat() ne fonctionne pas correctement...
 
voici mon code:  
 
<pre>
#include <conio.h>
#include <iostream.h>
#include <string.h>
/*-------------------------------------------------------------*/
char String[81];
char Car;
/*------------------------------------------------------------*/
/*------------------------------------------------------------*/
 
 void main()
 {
  cout << "Entre toute la chaine" << endl;
  cin >> String;
  cout << "Entre le caractere a enlever" << endl;
  Car = getche();
  cout << endl;
   
  char temp[81];
  char tempchar;
 
  for (int i = 0; i < strlen(String); i++)
  {
   
   if (String[i] != Car)
   {  
   
    tempchar = String[i];
    strcat(temp,&tempchar);
   }
   
  }
  cout << temp << endl;
 }
</pre>
 
 
 
 
merci d'avance!

Reply

Marsh Posté le 10-03-2001 à 03:16:52   

Reply

Marsh Posté le 10-03-2001 à 05:06:15    

Le strcat() attend une chaîne C terminée par un caractère '\0'. Sinon il foire.
 
Donc pour résoudre cette difficulté, tu déclares un char[] toto = " "; (longueur 1), et quand tu as trouvé ton caractère, tu peux écrire :
    toto[0] = String[i];
    strcat(temp, toto);
 
Sinon, je te signale que ton bout de code ne modifie pas du tout String, donc aucun caractère n'y sera enlevé...

Reply

Marsh Posté le 10-03-2001 à 06:45:17    

Voici un petit exemple qui fait ca en C:
 
void strdel(char **s, char c)
{
  char *p, *q;
 
  p=q=*s;
  do
    if (*p!=c)
      *q++=*p;
  while (*p++);
  *s = (char *)realloc(*s, strlen(*s)+1);
}
 
Et si tu as une chaine char *toto ou tu veux retirer le caractere contenu dans c, tu fais strdel(&toto, c);
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 10-03-2001 à 09:07:16    

BifaceMcLeOD a écrit a écrit :

 
Sinon, je te signale que ton bout de code ne modifie pas du tout String, donc aucun caractère n'y sera enlevé...




 
je sais tres bien c'est pour ca que je retourne l'autre string qui contient tout les caracteres sauf ceux à enlever
 
et merci à vous 2

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed