Question programe c
zakout
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
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";
}
}
}
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";
}
}
}
A voir également:
- Question programe c
- Windows ne trouve pas c program - Forum Windows 8 / 8.1
- "C:\program files\google\chrome\application\chrome.exe" ✓ - Forum Virus
- C:\program files\google\chrome\application\chrome.exe - Forum Logiciels
- Complément pour mon programe ! - Forum Programmation
- Programe d'ecriture, special ✓ - Forum Graphisme
1 réponse
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';
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';