Question programe c

Fermé
zakout - 9 janv. 2012 à 00:57
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 10 janv. 2012 à 02:27
Bonjour,


on me demande de faire un programe qui supprime une chaine d une texte.
j ai essaye mais j arrive pas
exemple: chaine mooohhh
sous_chaine oh
le programe affichera m
voila ce que j ai fais jusqua maintenant mais c er faux




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void decoupe_chaine(char *chaine, char *sous_chaine, char *file);

int main(void)
{
char file[100] = {0};
char chaine[51];
char sous_chaine[51];
printf("donner une chaine\n");
scanf("%s",&chaine);
printf("doner une sous chaine\n");
scanf("%s",&sous_chaine);
decoupe_chaine(chaine, sous_chaine, file);
printf("file : %s\n", file);
return 0;
}
void decoupe_chaine(char *chaine, char *sous_chaine, char *file)
{
int continuer=1;int i;
while (continuer ==1)

{
continuer=0;

char *c = NULL;
char *d = &chaine[0];
do
{

c = strstr(&d[0], sous_chaine);
if(c)
{

c[0] = 0;continuer=1;
strncat(file, &d[0], strlen(&d[0]));
d = &c[strlen(sous_chaine)];
}
}while(c);
if (continuer == 1 )
{


strncat(file, &d[0], strlen(&d[0]));
chaine = file;


file[100]="\0";
}
}
}

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 10/01/2012 à 02:31
Bonjour, vous pouvez utiliser strncmp http://www.cplusplus.com/reference/cstring/strncmp/ ou memcmp :
le principe :
boucle sur la taille de la chaine avec i et j=0
if(!strncmp(&chaine[i],sous_chaine,taille_sous_chaine)){
alors on décale i +=taille_sous_chaine
} else {
chaine[j]=chaine[i];
j++;
}
i++;
après la boucle chaine[j]='\0';
0