Remplacement caractere en C

salut!

je dois creer une fonction ki remplace un caractere d'une chaine par un autre voici ce ke j'ai fais:

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>

// Calcul de la longueur d'une chaine de caractères

int longueur1(char *ptc)
{

int i;
i = 0;
while(ptc[i] != '\0')
{
i++;
}
return i;

}

// remplacement d'un caractere

char remplacement (char *ptc)
{
int i;
i=0;
while (ptc[i]!= '\0')
{
if (ptc[i]=='a')
{
ptc[i]= '?';
}
else
{
i++;
}
}
return *(ptc) ;
}

int main()
{

char re,chaine[50];
int lg;

printf("\nEntrez une chaine (seul le premier mot est pris en compte) : ");
scanf("%s", chaine);
lg = longueur1(chaine);
printf("\nVotre mot comporte %d caracteres \n", lg);

re = remplacement(chaine);
printf("\nVotre nouvelle chaine est %s (a = ?) \n", re);
getch();
system("\nPAUSE\n");
return 0;

}

Dans la fonction remplacement comment dois je procéder pour retourner la chaine modifié ??

merci a vous !

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut =)

    Pour le calcul de la longueur de la chaine, essaie
    int n = strlen(chaine);

    c'est plus rapide non ? =)

    sinon pourquoi ne retournes-tu pas un char * à ton f° remplacement ?
    étant donné que tu auras le même nb de caractères, tu déclares 2 tableaux de même taille, et tu retournes l'adresse de la chaine modifiée.

    ++ bonne prog'
    1. fonction Renvoi (TabCaractere, NbreDeLettre): chaine
      variable : i entier //indice de parcours de TabCaractere

      debut
      'modification de la chaine
      i<--0
      repeter
      i <--0
      si TabCaractere(i)= caractereAChanger
      alors TabCaractere(i)<--Nouveau
      fsi
      i<--i+1
      jusqua i=NbreDeLettre
      'affichage du mot
      i<--0
      repeter
      chaine<--chaine+TabCaractere(i)
      i<--i+1
      jusqua i = NbredeLettre
      retourne chaine
      fin

      1. oups
        petite correction

        debut
        'modification de la chaine
        i<--0
        repeter
        si TabCaractere(i)= caractereAChanger
        alors TabCaractere(i)<--Nouveau
        fsi
        i<--i+1
        jusqua i=NbreDeLettre
        'affichage du mot
        i<--0
        repeter
        chaine<--chaine+TabCaractere(i) ' cette ligne est tout de meme a vérifier
        i<--i+1
        jusqua i = NbredeLettre
        retourne chaine
        fin