Question langage C
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Question langage C



  1. #1
    invitec77afd19

    Question langage C


    ------

    Bonjour à tous,
    j'ai une nouvelle question à vous posez concernant le langage C.

    En faite j'ai un fichier "salut.txt" (qui contient des lettres) dans lequelle je recherche la premiere lettre "K"

    Ce que je sait faire c'est de lire caractères par caractère et le afficher à l'écran de la maniere suivante:

    /****************************** ********************/
    Code:
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        int caractereActuel = 0;
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
    
            do
            {
                caractereActuel = fgetc(fichier); // On lit le caractère
                printf("%c", caractereActuel); // On l'affiche
            } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
     
            fclose(fichier);
        }
     
        return 0;
    }
    /****************************** ******/

    Le truc c'est que moi je parcours tout le fichier car je demande la lecture jusqu'à EOF (end of file) et ça sa marche . Ensuite, J'ai essayé de mettre la lettre "K" à la place de "EOF" pour arreter la lecture à la premiere lettre "K" mais sa marche pas.

    Comment faire ?

    Merci à vous pour votre aide qui va m'etre fortement utile

    -----
    Dernière modification par yoda1234 ; 25/07/2008 à 09h04.

  2. #2
    invite88ef51f0

    Re : Question langage C

    Salut,
    Première règle : "ça ne marche pas" ne veut rien dire. Ça fait une erreur ? Ça continue jusqu'à la fin ? Ça fait de la fumée et une odeur de brulé ? La solution ne sera pas du tout la même suivant le type de problème.

    Quand tu dis que tu as mis "K" à la place de "EOF", ça veut dire que tu as mis quoi exactement dans ton while ?

  3. #3
    SuperTux

    Re : Question langage C

    Tu as mis "K" ou 'K', car ce n'est pas du tout la meme chose en C...

    Mais il faut tout de meme garder le test avec EOF car si il n'y a pas de K dans ton fichier : boooummm!

    Code:
    while ((caractereActuel != EOF) && (caractereActuel != 'K'));

  4. #4
    invite8b867113

    Re : Question langage C

    J'ajouterais que 'k' est différent de 'K'.

  5. A voir en vidéo sur Futura
  6. #5
    invitec77afd19

    Re : Question langage C

    oui mais 'K' ou 'k' est un char et caractereActuel est un entier
    docn sa peut pas marcher

  7. #6
    inviteb9f49292

    Re : Question langage C

    oui mais 'K' ou 'k' est un char et caractereActuel est un entier
    la valeur de retour de fgetc est un "unsigned char" casté en "int" (cf man fgetc),
    De plus si tu compare un entier avec un caractère, ce dernier va être promu en entier tout en gardant sa valeur donc le test
    Code:
    ((caractereActuel != EOF) && (caractereActuel != 'k') && (caractereActuel != 'K'))
    devrait fonctionner...

  8. #7
    invite4ad25ccf

    Re : Question langage C

    Une autre petite remarque comme ca en passant : tu ne flush jamais ta sortie.
    printf() est une fonction bufferisée. En gros, elle écrit dans une mémoire tampon, et n'affiche le résultat que lorsqu'on lui ordonne.
    Deux moyens sont reconnus pour vider ce tampon :
    - rajouter un '\n' --> printf("%c\n", c);
    - appeller la fonction fflush(stdin);

    Dans 99.999% des cas tu n'auras aucun problème, le tampon étant bien vidé à la fin du programme. Mais parfois, lorsque tu vas réimporter ce code ailleurs tu peux avoir des surprises.
    Ex:
    Code:
    int main(int argc, char **argv)
    {
        guchar c = 0;
        printf("Souhaitez vous executer le programme ? [O/n]");
        if (scanf("%c", &c) != 1)
            fprintf(stderr, "Error\n");
        if (c == 'O' || c == 'o')
            ....
    }
    Il est fort probable que ce code ne t'affiche la question qu'apres avoir rentré la réponse. Ce qui peut s'avérer génant

Discussions similaires

  1. Question langage C
    Par invitec77afd19 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/07/2008, 18h04
  2. Question langage C
    Par invitec77afd19 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 03/07/2008, 09h54
  3. Question langage C
    Par invitec77afd19 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 02/07/2008, 12h02
  4. Question de langage
    Par invite5eef2692 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 14/03/2006, 15h35
  5. question sur le langage C
    Par invite0b0ee8b7 dans le forum Logiciel - Software - Open Source
    Réponses: 32
    Dernier message: 11/06/2005, 13h44
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...