1. #1
    Candidat au Club
    Homme Profil pro
    Science Informatique
    Inscrit en
    mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Science Informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut Extraire tous les mots d'une phrase?

    salut,
    je suis bloqué j'ai besoin de vous.

    Il n'affiche pas le dernier mot.
    Aussi si la phrase a plus de 3 mots, il ne retourne pas à la ligne :/

    Voici mon code mais il ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include<stdio.h>
    #include<string.h>
    void main()
     
    {   int l;
        char ch[512],*p;int k=0, i=0; 
        p=ch;
        printf("donner la chaine");
        gets(ch);
        l=(int)strlen(ch);
        printf("%d",l);
        printf("\n");
        do{
            while(*(p+i)!=' '|| *(p+i)=='\0' )
                {    
                    i++;
                }
     
                    *(p+i)='\0';
                     puts(ch+k);
                     printf("\n"); 
                     *(p+i)=' ';printf("%c \n",*(p+i));
                    i++; k+=i;
     
     
       } while( i<l)  ; //
     
     
    }
    Cordialement

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 763
    Points : 3 810
    Points
    3 810

    Par défaut

    Bonjour,

    Ligne 23, k représente le prochain début de mot donc il doit être égal à i.
    Après détection d'une séparation on écrit un mot, mais s'il y a N séparations c'est qu'il y a N+1 mots! il en manquera toujours un.

    Les tests me paraissent compliqués.
    Et j'espère que l'écriture *(p+i) n'est pas là pour un exercice où on doit utiliser le pointeurs plutôt que le fonctions, car ça ressemble plus à une bidouille pour contourner la notation tableau qu'une utilisation normale de pointeurs. Pour travailler sur les pointeurs, la variable i devrait disparaître.

  3. #3
    Candidat au Club
    Homme Profil pro
    Science Informatique
    Inscrit en
    mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Science Informatique

    Informations forums :
    Inscription : mai 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut

    merci infiniment ça aide beaucoup

    dans cette exemple le programme fait la meme chose mais svp comment peut on ignorer s'il ya plus d'une espace dans la phrase , ç'est a dire si on a plus d'une espace successive on les ignores et on retourne a la ligne seulement au debut de prochen mot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    /* Fonction qui extraire tous les mots*/
     
    void extraire(char *phrase)
    {
        int prochainMot = 0, i=0;
     
     
        for(i = 0; i < (int)strlen(phrase); i++)
        {
            for(i=0;*(phrase+i)!='\0';i++)
    {
        if(*(phrase+i)!=' ')
        {
             printf("%c",*(phrase+i));
          }
         else printf("\n");
    }
     
    }
    }
     
    int main(int argc, char *argv[])
    {
        char phrase[512] = "";
        printf("Entrez la phrase : ");
        gets(phrase);
     
        extraire(phrase);
     
     
    system("PAUSE");   
    return 0;
    }

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 372
    Points : 17 691
    Points
    17 691
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Mr_Mekni Voir le message
    dans cette exemple le programme fait la meme chose mais svp comment peut on ignorer s'il ya plus d'une espace dans la phrase , ç'est a dire si on a plus d'une espace successive on les ignores et on retourne a la ligne seulement au debut de prochen mot
    Bonjour

    Peut pas indenter correctement ton code ? En plus deux boucles imbriquées qui utilisent toutes deux la même variable "i" !?! On sent vraiment que tu fais ça parce qu'il faut le faire sans y apporter beaucoup d'intérêt. Donc nous...

    Comment ignorer plusieurs espaces ? Ben au lieu de tester "si espace alors je ne traite pas" il faut tester "tant que espace je ne traite pas".
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

Discussions similaires

  1. Compter les mots d'une phrase
    Par miss64 dans le forum Langage
    Réponses: 12
    Dernier message: 07/01/2017, 10h57
  2. Extraire les mots d'une phrase
    Par SilkyRoad dans le forum Contribuez
    Réponses: 1
    Dernier message: 24/08/2007, 17h06
  3. extraire que les mots avant une virgule
    Par lionski dans le forum Access
    Réponses: 6
    Dernier message: 03/08/2006, 16h19
  4. Lister les mots d'une phrase
    Par krole57 dans le forum Delphi
    Réponses: 4
    Dernier message: 14/06/2006, 14h20
  5. Trouver tous les "/mot" dans une chaîne
    Par micatmidog dans le forum Regex
    Réponses: 7
    Dernier message: 31/03/2006, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo