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 :

Fonction Comptage de chaine de caractere


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Fonction Comptage de chaine de caractere
    Salut a tous je suis nouveau

    Je dois develloper un programme de stéganographie.
    Mais j'ai un petit probleme,pour recupérer le nbr de caractères à coder la fonction strlen s'arrete a la premiere virgule
    EX: On tappe" Bonjour il est 6h"
    Ben il va trouver 7caracteres "Bonjour" et les autres il ne va pas les compter

    Connaissez vous une fonction qui compte le nbr de caracteres d'une chaine en prennant en compte les virgules?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: Fonction Comptage de chaine de caractere
    Bonjour et bienvenue sur le forum
    Citation Envoyé par Boubou1283
    Connaissez vous une fonction qui compte le nbr de caracteres d'une chaine en prennant en compte les virgules?
    strlen s'arrête au caractère de fin de chaîne ('\0') il ne s'occupe pas des caractères. S'il y a un problème c'est surement à la saisie (allez au hasard avec scanf?).

    un peu de lecture : Saisie de données par un opérateur (stdin)

    Et un peu de code pourrait nous aider

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Tu as testé le contenu de ta variable de chaine de caracteres pour voir si effectivement elle ne contient pas que "Bonjour" ? La fonction strlen compte les caracteres un à un jusqu'à la fin de la chaine donc le problème d'autre part !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bon j'ai fais un vieu printf pour voir ben il me prend que "Bonjour" il s'arrete a la virgule je comprend pas la !!!
    Lol vou avez pas une idée?

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Un code serais peut etre le bienvenue sinon on aura du mal à t'aider !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     printf("Entrer la phrase a coder:");                  
        scanf("%s",&phrase);
        nbr=strlen(phrase);

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut

    Ton main retourne obligatoirement un resultat donc à la fin
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ca y est j'ai trouver la faute fallias juste utiliser gets au lieu du scanf

    Merci quand meme

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci @ tous

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Vu que c'est de toutes façons une chaine de caracteres à lire, moi j'utiliserais plutot la fonction fgets () au lieu du scanf !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    trop tard j'ai trouver loool

  12. #12
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si tu as trouvé gets continue de chercher car gets est BUG de C.
    La bonne fonction de lecture du C est fgets(buf, sizeof(buf), stdin). comme il est écrit partout sur ce forum et dans la FAQ.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  13. #13
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Boubou1283
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     printf("Entrer la phrase a coder:");                  
        scanf("%s",&phrase);
        nbr=strlen(phrase);
    scanf() n'est pas la bonne fonction pour faire des saisies (surtout de phrases, vu qu'il s'arrêtre au premier espace...). Ce lien

    http://emmanuel-delahaye.developpez....tes.htm#saisie

    t'a été donné. Tu as été voir ou on perd son temps à essayer de t'aider ?

    En complément :

    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  14. #14
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Citation Envoyé par Boubou1283
    trop tard j'ai trouver loool
    Tu as trouvé en prenant une fonction gets etant un bug, c'est vrai écoute ce qu'on t'a dit utilise fgets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        printf("Entrer la phrase a coder:");                  
        fgets (phrase,sizeof(phrase),stdin); 
        nbr=strlen(phrase);
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  15. #15
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par benjiprog
    Citation Envoyé par Boubou1283
    trop tard j'ai trouver loool
    Tu as trouvé en prenant une fonction gets etant un bug, c'est vrai écoute ce qu'on t'a dit utilise fgets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        printf("Entrer la phrase a coder:");                  
        fgets (phrase,sizeof(phrase),stdin); 
        nbr=strlen(phrase);
    Oui, enfin, il y a quelques précautions à prendre avec fgets(), comme tester et éliminer le '\n'... La consigne est plutôt de construire sa fonction de lecture de ligne à partir de fgets() (ou de fgetc() si on veut du cousu main)

    http://emmanuel-delahaye.developpez.com/clib.htm
    Module IO
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Fonction sur les chaine de caracteres
    Par mattmax dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/01/2011, 17h15
  2. Fonction split() suivant chaine de caracteres
    Par pingouinos_64 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 02/03/2010, 11h46
  3. fonction rand() sur chaine de caracteres
    Par ellgafsi dans le forum Langage
    Réponses: 17
    Dernier message: 03/06/2009, 16h44
  4. random en fonction d'une chaine de caractere
    Par tatayoyo dans le forum C
    Réponses: 6
    Dernier message: 28/02/2006, 21h23
  5. Réponses: 2
    Dernier message: 30/03/2004, 11h31

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