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 :

afficher le nombre de caractere saisi


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut afficher le nombre de caractere saisi
    salut à tous !
    j'aimerai savoir comment je pourrais afficher le nombre de caractere saisi dans une phrase ou un mot que je saisi avec la fonction scanf ou autres. par exemple si je saisi le mot "mois" je souhaite pouvoir afficher le nombre de caractere contenu dans le mot "mois" qui ici est 4; de meme que si j'ecris " hello world" je dois pouvoir afficher le nombre de caractere contenu dans cette chaine qui ici est 11 (avec l'espace,n'oublié pas c'est un caractere !)

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par salif98
    salut à tous !
    j'aimerai savoir comment je pourrais afficher le nombre de caractere saisi dans une phrase ou un mot que je saisi avec la fonction scanf ou autres. par exemple si je saisi le mot "mois" je souhaite pouvoir afficher le nombre de caractere contenu dans le mot "mois" qui ici est 4; de meme que si j'ecris " hello world" je dois pouvoir afficher le nombre de caractere contenu dans cette chaine qui ici est 11 (avec l'espace,n'oublié pas c'est un caractere !)
    Pour l'affichage :

    De la page man :

    Ces fonctions renvoient le nombre de caractères imprimés, sans compter le caractère nul `\0' final dans les chaînes.

    Pour la capture, tu peux toujours utiliser strlen après la saisie.

    Jc

  3. #3
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par salif98
    salut à tous !
    j'aimerai savoir comment je pourrais afficher le nombre de caractere saisi dans une phrase ou un mot que je saisi avec la fonction scanf ou autres. par exemple si je saisi le mot "mois" je souhaite pouvoir afficher le nombre de caractere contenu dans le mot "mois" qui ici est 4; de meme que si j'ecris " hello world" je dois pouvoir afficher le nombre de caractere contenu dans cette chaine qui ici est 11 (avec l'espace,n'oublié pas c'est un caractere !)
    strlen() de <string.h> ?

    A+

  4. #4
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut est-ce possible en <stdio.h>?
    est ce qu'il serait possible de le faire en utilisant uniquement la bibliotheque <stdio.h>? ma base n'est pas encore profonde en C !

  5. #5
    Rédacteur

    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 113
    Par défaut
    Citation Envoyé par salif98
    est ce qu'il serait possible de le faire en utilisant uniquement la bibliotheque <stdio.h>? ma base n'est pas encore profonde en C !
    strlen c'est aussi la base
    sinon tu peux tester sur le '\0', tant que on n'est pas arrivé à '\0' on incrémente un indice, et la dernière valeur est biensûr la taille de ta chaine
    Mais il faut faire attention, il ne faut pas compter le '\0'

  6. #6
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Citation Envoyé par salif98
    est ce qu'il serait possible de le faire en utilisant uniquement la bibliotheque <stdio.h>? ma base n'est pas encore profonde en C !
    Attention, <stdio.h> est un fichier d'en-tête de la bibliothèque standard du C, ce n'est pas une bibliothèque. Ce fichier est une interface qui va te juste de donner la visibilité sur une partie des fonctions et données de la bibliothèque, ici celles concernant les entrées/sorties comme l'indique son nom.

    Si tu ne veux utiliser que les fonctions d'E/S, tu vas devoir créer ta propre fonction pour déterminer la longueur d'une chaine de caractères en regardant où est le caractère nul ('\0'), c'est un bon exercice. La bibliothèque standard du C offre un autre fichier d'en-tête, <string.h>, pour accéder aux fonctions de manipulation des chaines de caractères comme strlen().

    A+

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pour compter le nombre de caractères d'une chaine valide "s":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int length=0;
    while(s[++length]);

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par seriousme
    Pour compter le nombre de caractères d'une chaine valide "s":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int length=0;
    while(s[++length]);
    Probleme de pre-incrementation. Ici tu ne regardera jamais la valeur de s[0]

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Probleme de pre-incrementation. Ici tu ne regardera jamais la valeur de s[0]
    Ca ne pose pas de problème pour les chaines de + de 1 caractères.
    Sinon en post incrémentation pour toute les chaines y compris vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int length=0;
    while(s[length++]);
    length--;

  10. #10
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut toujours bloqué
    Citation Envoyé par Skyrunner
    Probleme de pre-incrementation. Ici tu ne regardera jamais la valeur de s[0]
    merci, pouvez vous me donner un peu de detail sur la syntax ? par exemple avec "int lenght=0;
    while(s[++lenght])
    ...
    ...
    par exemple avec le mot "mois". comment l'utiliser pour afficher le nombre de caractere? (coller un exemple de code)

  11. #11
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char mot[32]={0};
    strcpy(mot,"mois");
    int length=0;
    while(mot[length++]);
    length--;

  12. #12
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char mot[32]={0};
    strcpy(mot,"mois");
    int length=0;
    while(mot[length++]);
    length--;
    le code marche bien, il fait exactement ce que je veux. mais le niveau est trop elevé pour moi en ce moment. j'ai du utiliser <string.h> pour le compiler. Jusqu'à present je pensais avoir utliser "scanf" mais je suis bloqué avec ce probleme que je veux resoudre. est il possible de ne realiser cette operation uniquement avec "<stdio.h>,scanf,printf " et bien sur une variable pour le compteur d'elements?
    le code que tu m'a donné fonctionne bien, il n'y a aucun probleme dessus mais seulement je ne comprends pas vraiment ce qui se passe techniquement .Merci

  13. #13
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    L'option "%n" de "scanf" permet de connaitre la longueur de la chaine de caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int length;
    char s[32]={0};
    scanf("%s%n",s,&length);
    Ou en plus sécurisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int length;
    char s[32]={0};
    scanf("%31s%n",s,&length);
    s[32]='\0';

  14. #14
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    bonjour
    si je comprend bien la question la reponse est tres facile
    soit :strlen(ch);
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(i=0;ch[i];i++)
    {}
    printf("le nombre de caract est %d",i);

  15. #15
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut plus de details
    strlen c'est aussi la base
    sinon tu peux tester sur le '\0', tant que on n'est pas arrivé à '\0' on incrémente un indice, et la dernière valeur est biensûr la taille de ta chaine
    Mais il faut faire attention, il ne faut pas compter le '\0'
    j'aimerai avoir un peu plus de details. car je ne suis pas aussi assit que tu le penses !comment utiliser le "\0" pour compter le nombre de caracteres dans un mot ou une phrase ?

  16. #16
    Membre expérimenté Avatar de damienlann
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 293
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int length;
    char s[32]={0};
    scanf("%31s%n",s,&length);
    s[32]='\0';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int length;
    char s[32]={0};
    scanf("%31s%n",s,&length);
    s[31]='\0';

  17. #17
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par salif98
    j'aimerai avoir un peu plus de details. car je ne suis pas aussi assit que tu le penses !comment utiliser le "\0" pour compter le nombre de caracteres dans un mot ou une phrase ?
    Tu as eu un tas d'exemples !! Il faut d'abord bien comprendre ce qu'est une chaine de caractères en C (et savoir aussi ce qu'est un pointeur). Pour imager c'est une suite consécutive de caractères se terminant par un caractère spécial, le caractère nul, qui vaut 0 en valeur entière et qui est représenté par la constante '\0' (qui a en fait le type int).

    Exple:
    char * pStr = "hello";

    pStr a comme type pointeur vers char. C'est une variable qui pointe sur le début de la chaine "hello". Cette chaine, en mémoire, est représentée comme ci-dessous (dans le code source, on ne voit pas le '\0' apparaitre) :

    'h' | 'e' | 'l' | 'l' | 'o' | '\0'

    pStr pointe sur le début de la chaine de caractères, i.e le 'h'

    'h' | 'e' | 'l' | 'l' | 'o' | '\0'
    ^
    |
    pStr

    Donc, à partir de là, pour connaitre le nombre de caractères de la chaine "hello", il suffit de déplacer pStr (que tu peux voir comme un curseur) jusqu'à trouver le '\0' qui termine la chaine. Pour ce faire, il suffit de tester si a une position donnée le caractère pointé par pStr est '\0', et si ce n'est pas le cas, on déplace pStr jusqu'à trouver le '\0'.

    A+

  18. #18
    Membre actif
    Inscrit en
    Novembre 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 75
    Par défaut personne ne comprend pas ce que je veuix en fait, voici les details
    salut seriousme !
    merci pour tes contributions. je suis debutant avec le langage C, je suis tombé dans un cite où on proposait des exos de programmation en C mais seulement sans solution. le niveau des exos est par niveau du debutant, les exos suivent un ordre progressif, ce qui par rapport à cet ordre, je suis sensé ne pas savoir utiliser les tableaux, les bibliotheque de fonction ANSI C tel que <string> qui m'a permis de compiler le code que tu m' as envoyé et qui a bien marché. je suis sensé ne savoir utiliser que printf, scanf, stdio.h et aussi les instructions itératives.
    bien , ce que je veux faire c'est d'ecrire un programme qui lit une ligne en entrée et affiche le nombre de caractere de cette ligne. comme indications données, la ligne se termine lorsque le caractere '\n' est lu et le caractere '\r' ne doit pas etre compter. ca m'amene à realiser qu'il y aura incrementation d'une variable comme compteur. si tu peux m'aider essaie d'aborder ca avec les contraintes preciser plus haut.
    Tu disais que le caractere %n dans scanf permet de compter; peux tu entrer en detail ou alors peux tu me donner un lien que je pourrais consulter directement?
    Merci

  19. #19
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par damienlann
    Bien vu.
    Merci.

  20. #20
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Tu disais que le caractere %n dans scanf permet de compter; peux tu entrer en detail ou alors peux tu me donner un lien que je pourrais consulter directement?
    C'est juste une option de la fonction "scanf" qui permet cela.
    Un lien intéressant sur "scanf":
    http://xrenault.developpez.com/tutoriels/c/scanf/

Discussions similaires

  1. Réponses: 13
    Dernier message: 04/03/2014, 13h47
  2. [ZF 1.11] Afficher un nombre X de caracteres
    Par wperle dans le forum Zend Framework
    Réponses: 4
    Dernier message: 18/06/2012, 19h51
  3. Réponses: 8
    Dernier message: 18/04/2011, 15h46
  4. Javascript - Afficher nombre de caracteres restants - Textarea
    Par 20cents dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/09/2010, 10h18
  5. limiter une saisie a un nombre de caracteres donné
    Par joe370 dans le forum VBA Access
    Réponses: 9
    Dernier message: 03/07/2007, 14h09

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