Language c test d'arret d'une boucle

elmadina Messages postés 33 Statut Membre -  
elmadina Messages postés 33 Statut Membre -
Bonjour,
je suis un débutant dans la programmation en c
j'ai voulu exécuter un programme qui contient une boucle avec un test d'arrêt
getchar()!=EOF
mais le programme ne se termine pas car je n'ai pas su comment saisir le EOF -la condition d'arret- aprés l'éxecution du programme
pourriez vous m'aider
merci;
Configuration: Windows XP
Firefox 2.0.0.13

7 réponses

  1. SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
     
    Salut,
    tu n'as qu'à saisir une chaine de caractères particulière, genre "exit", comme pour une fenêtre dos
    0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    il me semble que EOF, c'est ctrl+D
    mais pourquoi utiliser EOF, et pas un autre caractère ?
    regarde là si tu veux utiliser des caractère un peu spéciaux : https://fr.wikipedia.org/wiki/ASCII
    0
  3. Laaris Messages postés 131 Statut Membre 73
     
    EOF (pour "End Of File") c'est pour quand ta boucle parcourt le contenu d'un fichier, pour tester si tu es arrivé à la fin.

    Si ta boucle te demande un caractère à saisir jusqu'à ce que tu saisisses un caractère particulier il ne faut pas utiliser EOF, mais définir un caractère qui servira à arrêter cette boucle.
    0
  4. elmadina Messages postés 33 Statut Membre
     
    merci a tous
    le voila le programme que j'ai essayé d'implémenter

    #include <stdio.h>
    /* copy input to output; 1st version */
    main()
    {
    int c;
    c = getchar();
    while (c != EOF) {
    putchar(c);
    c = getchar();
    }
    }

    alors ce n'est pas possible d'utiliser exit
    j'attend vos réponses et merci a tous
    0
    1. Laaris Messages postés 131 Statut Membre 73
       
      Remplace EOF par un caractère qui sera utilisé uniquement pour arrêter le programme, un caractère que tu es sûr de ne pas utiliser dans un autre cas, par exemple '¤' ou '§', ça dépend à quoi correspondent les caractères que tu entres.
      0
      1. elmadina Messages postés 33 Statut Membre > Laaris Messages postés 131 Statut Membre
         
        le compilateur me repond qu'il y a une comparaison illegal
        pointeur avec caractaire
        merci encore
        merci
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    as tu essayé ctrl+D ?
    0
    1. elmadina Messages postés 33 Statut Membre
       
      merci
      ctrl+D ça n'a pas marché
      0
  7. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    EOF c'est pour qu'en tu utilise un fichier...
    definit c comme un char et utilise un caractere special pour la condition d'arret
    0
    1. elmadina Messages postés 33 Statut Membre
       
      merci pour votre réponse
      c'est simple de programmer un test d'arret
      mais moi j'ai voulu tester l'exemple que j'ai trouvé dans le livre
      "The C programming Language" de By Brian W. Kernighan and Dennis M. Ritchie
      et ça ma surprie que l'exemple cité dans un tel livre ne marche pas
      et j'essai de trouver l'erreur
      merci encore
      0
  8. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    ça dépend aussi de ta commande de lancement.
    as tu utiliser l'indirection ? genre:
    prog<machin.txt
    J'ai souvent remarqué que les exemple des livres ne fonctionnaient pas. Souvent les auteurs les écrivent sans tester, ils oublient des menus détails. Le but étant d'avoir le principe général. Si tu ne trouve pas EOF, c'est pas grave, utilise un autre caractère.
    0
    1. elmadina Messages postés 33 Statut Membre
       
      oui merci vous avez raison je vais utiliser un autre caractère mais je voulais juste comprendre ou est le problème
      merci
      0