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 :

Probléme avec un programme de comptage de caractères


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Probléme avec un programme de comptage de caractères
    Bonjour à tous,

    Je suis nouveau sur le forum. J’ai un problème avec un programme de comptage de caractères.
    Je possède un système linux mandrake 9.1 version 2.84.

    Le programme compile sans erreurs, mais quand je l’exécute, le prompt passe à la ligne mais n’affiche pas le nombre de caractères reçus en entrées.

    Voici le code :

    #include <stdio.h>

    main()
    {
    long nc ;

    nc = 0 ;

    while (getchar() != EOF)
    ++nc ;
    printf("%ld\n", nc);
    }

    J’utilise un livre pour apprendre le langage c, mais j’ai du mal à poursuivre mon apprentissage si un programme aussi basique ne fonctionne pas.
    Par conséquent le programme qui suit dans le livre, le programme "word count" ne fonctionne pas non plus, il compile sans aucunes erreurs mais fait comme l'autre. Après l'avoir éxecuté, il prends les caractères que je tape en entrée, mais il passe à la ligne sans afficher le nombre de caractères que j'ai tapé.
    Je suis donc un peu perdu etmerci beaucoup si vous arrivés à résoudre mon problème.

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Bon lâche ton livre va sur la FAQ...

    http://c.developpez.com/faq/c/

    Pour ton problème

    http://c.developpez.com/faq/c/?page=...RS_fin_fichier

    Mais ce n’est pas jolie jolie...

    Pour la taille des fichiers

    http://c.developpez.com/faq/c/?page=...HIERS_filesize

  3. #3
    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 : 37
    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
    Points : 3 958
    Points
    3 958
    Par défaut
    Le problème est que "stdin" ne se termine pas par "EOF".
    De plus "EOF" sur "stdin" n'est détecté que si il est le premier caractère.
    Il faut changer le test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (getchar() != '\n')
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    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
    Quelques petites corrections sur ton main:

    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
     
    #include <stdio.h>
     
    int main (void)
    {
       long nc = 0;
     
     
       while (getchar() != '\n')
       {
          nc++;
       }
       printf ("%ld\n", nc);
     
     
       return 0;
    }
    • main retourne toujours un int
    • si tu n'utilise pas les arguments en ligne de commande, met void entre les parenthèses


    Ton problème est que tu ne sort pas de la boucle donc il est normal que tu ne vois pas le comptage des caractères EOF étant pour détecter une fin de fichier en premier lieu !


    [EDIT] ... erf on m'a pris de vitesse, suis décidement trop lent [/EDIT]
    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 !

  5. #5
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Tapes Control-D pour sortir de ta boucle...
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

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

Discussions similaires

  1. [Débutant] Problème avec un programme
    Par Schaezar dans le forum Ruby
    Réponses: 2
    Dernier message: 13/02/2007, 23h39
  2. Réponses: 3
    Dernier message: 28/12/2006, 15h06
  3. Réponses: 11
    Dernier message: 14/02/2006, 00h26
  4. Problème avec le programme executable
    Par GreyDragon dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/10/2005, 13h43
  5. Problème avec un programme éxécuter en console
    Par bzhrobby dans le forum Windows
    Réponses: 2
    Dernier message: 25/04/2005, 10h42

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