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 :

Compter des arguments


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut Compter des arguments
    je bloque sur un exercice qui me rend folle rrrrrr

    coder la fonction de prototype
    unsigned int size_x (char *), qui utiliserait l'accès indexé pour compter, puis retourner le nombre effectifs de caractères dans une chaîne quelconque passée en argument

    j'ai essayé plusieurs code qui ne marche pas biensur

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    unsigned  int size_x(str char *argv[])
     
    {
     size_x (argv[]); 
     
     return 0;}
     
    unsigned  int size_x(char * argv)
     
    {
      int compteur = 0, k = 0;
      while (argv[k]) {compteur++ ; k++;} ;
      printf("%s : %i caractères\n", argv[1],  size_x(argv[1])) ;
     
    }

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    ton pointeur en entrée est similaire à un tableau terminé par un 0 (=NULL)

    Comme c'est un char*, cela signifie que ++ avance de sizeof(char), c'est à dire 1.
    toi, ce qui t'intéresserait, c'est de compter les mots (groupe de caractères non blancs, séparés par des blancs).

    il y a une difficulté: les blancs consécutifs.
    Envisage d'utiliser is_space ou is_numalpha.

    Maintenant, si tu cherches seulement la longueur d'une chaine, il s'agit de recoder la fonction strlen
    Tu remarqueras que k et compteur ont la même valeur et le même type, et donc que l'un des deux est inutile.

    Quel est le symptome qui te fait dire que ca ne marche pas?

  3. #3
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    Je suis débutante en C on n'a pas fais ce que tu me demande encore donc je dois utiliser que ce qu'on n'a fait pas plus

  4. #4
    Membre expérimenté
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Par défaut
    Salut à toi!
    C'est quoi ton message d'erreur exactement? Ou bien ce que ça te retourne?
    Moi il y a plusieurs choses qui me surprennent:
    - Tu utilises le même nom pour les deux fonctions, même si le type des arguments sont différents, c’est pas la meilleure solution.
    - Les deux fonctions s’appellent l’une l’autre, c’est une structure vraiment étrange.
    - Ton compteur et ta variable k s’incrémentent en même temps tous les deux.

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    J'ai essyaé cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    #include <stdlib.h>
     
    unsigned  int size_x(char *str)
     
    int main ( int argc,  char* str[] )
     
    {
     int compteur = 0;
      while (str[argc]) {compteur++ ;} ;
      printf("Argument %s :  Argument %ld\n", str[1], compteur);
     
     return 0;}

    message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -SVF1521A7EB:~$ ./compile c4.c
    cx07.3.c: In function ‘size_x’:
    cx07.3.c:8:1: error: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘{’ token
     {
     ^
    cx07.3.c:13:2: error: expected ‘{’ at end of input
      return 0;}
      ^
    cx07.3.c:13:2: warning: control reaches end of non-void function [-Wreturn-type]
      return 0;}
      ^

  6. #6
    Membre expérimenté
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Par défaut
    Déjà, au niveau de l'indentation et de la syntaxe il y a des problèmes.

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    unsigned int size_x(str char *argv[])
    {
        size_x (argv[]); 
        return 0;
    }
     
     
    int main (int argc,  char** argv)
    {
        int compteur = 0;
     
        while (argv[argc]) 
        {
            compteur++ ;
        }
     
        printf("Argument %s :  Argument %ld\n", argv[1], compteur);
     
        return 0;
    }

    J'ai juste recopié ton code en enlever les potentielles fautes de syntaxe que j'ai pu voir.
    Il te manque une condition de test dans le "main" pour vérifier que tu as bien des arguments passés en ligne de commande.

    Ensuite ce que je ne comprends pas c'est à quel moment tu appelle size_x, car elle n'est jamais appelée.
    Je ne comprend pas non plus ce que tu veux faire exactement, tu veux compter le nombre d'arguments? Compter le nombre de caractères par argument? Compter le nombre de caractère de tous les arguments confondus? Il nous faudrait une explication plus détaillée et explicite car le code est difficilement exploitable pour le comprendre. ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] compter des caracteres dans une chaine
    Par louisis dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 22h39
  2. [LG]Compter des Lignes...
    Par Loceka dans le forum Langage
    Réponses: 7
    Dernier message: 04/03/2004, 20h29
  3. [SQL] Compter des champs indépendement l'un de l'autre
    Par rippey dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 29/10/2003, 15h35
  4. Réponses: 9
    Dernier message: 29/07/2003, 14h41
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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