[C] Supprimer 1ère occurence selon motif

Résolu/Fermé
houda - 10 févr. 2009 à 13:59
 houda - 11 févr. 2009 à 12:29
Bonjour
je cherche la correction de cet exercice
s'il vous plait aidez moi
l'exercice:
ecrire un programme qui suprime la premiere occurence d'une chaine de caracteres OBJ dans une autre
chaine de caracteres SUJ
EXEMLES:
PHON ALPHONSE ALSE
T TOTALEMENT OTALEMENT
HELLO HELLO

et merci en tout cas
A voir également:

7 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
10 févr. 2009 à 18:20
Salut,
Puisque tu as le droit d'utiliser les fonctions de string.h, tu peux faire :
#include <stdio.h>
#include <string.h>

int main(void){
    char suj[50];
    char obj[10];
    char *p=NULL;

    printf("Entrez une chaine : ");
    fgets(suj,sizeof suj,stdin);
    printf("Mot à supprimer : ");
    scanf("%9s",obj);

    p=strstr(suj,obj);
    if(p)
        memmove(p,p+strlen(obj),sizeof obj);

    puts(suj);
    
    return 0;
}

Cdlt
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 févr. 2009 à 18:25
Salut,

Je préfère ta version ;-)
Toutefois avec for il peut voir un peu le mécanisme ;-))
0
kill4m Messages postés 224 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 28 janvier 2012 26
10 févr. 2009 à 14:02
En quelle langage ?? (C je suppose)

Et je suppose aussi que c'est un exercice que tu as à faire, donc tu commences (tu mets ce que tu as déjà fait) et nous on te dit si c'est juste ou pas ....

bye
0
merci pour la reponsle language de traduction est c
et on utilise la bibliotheque <string.h>
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 févr. 2009 à 14:10
Re,

Pour avoir la correction il nous faut voir ce que tu as fait. L'ennoncé ne suffit pas.
0
merci pour la reponse
c tres gentil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mon travail c'est
#include<stdio.h>
#include<
void main()
{
char obj[20],suj[20];
int i,j;
j=0;
for(i=0;obj!='/0';i++)
if(obj[i]!=obj[i+1])
suj[j]=obj[i];
j++;




}
c'est ça mon tarvail, je ne sais pas comment je continue le programme
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 févr. 2009 à 17:44
Re,
lami20j@debian:~/trash/ccm_c$ cat ccm53_premieroccurence.c
#include<stdio.h>
#include<string.h>

int main()
{
        char obj[10];
        char suj[50];
        int i,j,k,t;

        printf("Entrez un la chaine : ");
        fgets(suj,50,stdin);
        printf("Mot à supprimer : ");
        scanf("%s",obj);

        for(i=0;suj[i]!='\0';i++){
                for(j=i,k=0;obj[k]!='\0' && suj[j]==obj[k];++j,++k)
                        ;
                if (k>0 && obj[k]=='\0')
                        break;
        }

        for(t=i;t<strlen(suj);++t)
                suj[t]=suj[t+k];
        suj[t]='\0';
        printf("%s\n",suj);
        return 0;
}
Résultat
lami20j@debian:~/trash/ccm_c$ gcc ccm53_premieroccurence.c
lami20j@debian:~/trash/ccm_c$ ./a.out
Entrez un la chaine : ALPHONSE
Mot à supprimer : PHON
ALSE

lami20j@debian:~/trash/ccm_c$ ./a.out
Entrez un la chaine : TOTALEMENT
Mot à supprimer : T
OTALEMENT

lami20j@debian:~/trash/ccm_c$ ./a.out
Entrez un la chaine : HELLO
Mot à supprimer : HELLO


lami20j@debian:~/trash/ccm_c$ ./a.out
Entrez un la chaine : A LA FIN
Mot à supprimer : FIN
A LA
--
106485010510997108
0
merci pour le resulat
on a fait la correction en classe et c'est presque le meme resultat
merci encore
0