IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Petit Probleme boucle "for"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Par défaut Petit Probleme boucle "for"
    Bonjour

    je suis un gros débutant

    J'ai un petit probeme avec une boucle "for" , je veux creer une boucle toute simple qui me revoie le nombre de mots d'une chaine de caractéres , mais la valeur "mots" me renvoie toujours 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char* phrase;
        printf("Veuillez enter une phrase \n");
        scanf("%s", phrase);
     
     
        for (i=0 ; i<strlen(phrase) ; i++) {
            if (*(phrase+i)== ' ' ) {
               mots++;
               }
            }
        printf("%ld \n", mots+1);
    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    comment mots est-il défini et initalisé ??

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Par défaut
    Bonsoir,

    Alors déjà, la fonction scanf n'alloue pas de mémoire. Il convient donc de lui passer, soit une chaîne déjà allouée (man malloc(3)), soit un tableau de char déclare comme ceci :

    Après, utiliser scanf n'est pas vraiment une bonne idée, il vaut mieux utiliser fgets(3) qui est plus sure.

    La variable i n'est pas déclarée.

    Ensuite, il faut éviter le strlen dans le for, a chaque passage de ta boucle, la longueur de la chaîne est recalculée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
     
    int    size;
     
    size = strlen(tachaine);
    for (i  = 0; i < size; i++)
    {
       ...
    }
     
    ...
    Puis il faudrait déclarer, et initialiser mots (un int et a 0 je présume).

    Et hop tout ça dans une fonction.

    Ensuite niveau algorithme tu peux mieux faire :-)

Discussions similaires

  1. [AC-2007] Petit probleme sur boucle FOR
    Par Spurius dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/04/2010, 14h59
  2. [AC-2007] Petit probleme sur boucle FOR
    Par Spurius dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/04/2010, 11h04

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