begin process at 2012 05 29 22:55:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Langage c : problème avec gets


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Langage c : problème avec gets

dimanche 8 février 2009 à 12:17:59 | Langage c : problème avec gets

Lens49

Bonjour, j'ai besoin d'aide pour débugger un petit programme que j'ai écris en langage c. Je pense que le problème est lié à une méconnaissance de la fonction "gets". Le but du code est de compter le nombre de lettre d'un texte écris sur plusieurs lignes. Pour connaître le nombre de lettre effectivement tapez en entrée il faut appuyer sur la touche "Entrée" 2 fois. Le programme doit compter les lettres de l'alphabet et les espace seulement. Le caractère nul '\0' et saut de ligne '\n' ne doivent pas être pris en compte.

 

Exemple: si je tape sur une première ligne la chaine suivante : "azerty azerty" puis que je tape la touche "Entrée"

Sur une seconde ligne j'écris la chaîne suivante "ytreza ytreza" puis que je tape sur la touche "Entrée" 2 fois pour que le programme finisse et me donne le résultat du nombre de lettre du texte tapé. 

Toutes les lettres on été compté 4 fois sauf le "y" qui lui est compté 3 fois. Si je fait un autre exemple sur 10 lignes, je m'aperçois que mon programme ne compte jamais le premier caractère d'une nouvelle ligne.

 

 

Voici le programme:

#include <stdio.h>

#define LGMAX 127

 

int main()

{

    char ascii[26], ligne[LGMAX+1];

    int nb[26], i, j, autre = 0, comptelettre = 0, espion = 0, nbcarac=0;

 

    for(i=0; i<26; i++)        nb[i]    = 0;

    for(i=0; i<LGMAX; i++)     ligne[i] = '#';

    for(i=0; i<26; i++)        ascii[i] = i + 97;

 

    printf("Donnez votre texte, en terminant par une ligne vide : \n");

 

    i = j = autre = 0;

 

 

 

    do

    {

        nbcarac=0;

        gets(ligne);

        printf("\n");

        putchar('\n');

 

        printf("\n");

        for (i=0;i<127 && ligne[i] != '\0';i++) nbcarac+=1;;

        printf("le nombre de caractere est : %d \nle 1ere lettre est %c\n", nbcarac, ligne[0]);

 

        for (i=0; i<127 /*&& ligne[i] != '\0' */&& ligne[i] != '\n'; i++)

            {

                if (ligne[i] > 96 && ligne[i] < 123)    {comptelettre += 1;espion+=1;}

                if ((ligne[i] < 97) || (ligne[i] > 122 && ligne[0] != '\n'))    {autre += 1; espion += 1;continue;}

 

                for(j=0; j<26 && ligne[i] != '\0' && ligne[i] != '\n'; j++) if (ligne[i] == ascii[j])      {nb[j] += 1;}

            }

    }

    while(getchar() != '\n');

 

 

    printf("Votre texte comporte %d caracteres dont : \n", comptelettre);

 

    for(i=0; i<26; i++)     printf("%d fois la lettre %c\n", nb[i], ascii[i]);

 

    printf("\net %d autres caracteres\n", autre);

 

 

    printf("\n\n");

    return 0;

}

 

 

Si quelques bonnes âmes pouvaient m'expliquer l'erreur. Je tourne autour du programme depuis un bon moment, j'ai essayé différentes choses mais sans résultat.

Merci.



Aurel49


Cette discussion est classée dans : ligne, programme, printf, for, lettre


Répondre à ce message

Sujets en rapport avec ce message

comment cacher les valeurs d'un tableau 2d [ par lil_adriano ] Salut j'ai un souci, j'ai crée un tableau 2d   #include #include <stdlib Table Ascii [ par Oxie666 ] Hello, je suis tout nouveau ici (et forcement méga débutant) et j'ai une question :J'ai écrit un petit programme afin d'avoir sous la main une table a besoin d'aide dans programme en c [ par houda986 ] salut; je suis un débutante en programmation et j'ai besoin d'aide pour la résolution d'un programme en C,c'est un programme de tri par base ... j'ai Programme en C [ par f1rstsurf ] bonjour, je code actuellement un petit programme en C , ce programme à pour but de demander au client de définir son budget cadeau et en fonction de s Problème générateur de grille de sudoku en C [ par Dovah ] Bonjour, je suis débutant en programmation, et pour m'entraîner j'ai décidé de créer un programme qui génère aléatoirement une grille de sudoku en C Aide pour la conception de programme automatisé sous vista [ par zlatan13 ] Salut à tous, Je débute dans la programmation, je souhaiterai concevoir quelques programmes permettant de simplifier certaines taches, j'ai plusieur besoin d'aide pour faire un petit programme [ par flowneo ] bonjour, je voudrais avoir un peu d'aide concernant un petit programme, je voudrais en faite que mon programme me dise si la lettre est dans le mot ( appeler à une ligne commande dos [ par boualiasma ] Bonjour, Dans mon programme C, je voulais appeler un autre programme X qui est exécuté par une ligne commande dos. Donc, comment je vais appeler à un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales