Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 18/04/2013, à 23:48

temps

[résolu] boucle infinie en langage c

Bonjour,
en testant ce code, j’obtiens une boucle infinie, est-ce que quelqu'un peut m'indiquer pourquoi ?

          
/**pour*compiler*le*fichier*lire_texte.c***faire***/
/**gcc lire_texte.c -o lire_texte -Wall***/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
      
	char * extension = ".jo";
	char * action = "./lecteur ";
	char mot [30] ;
	int qui;
  /*j ouvre mon fichier & lire*/
  FILE* jojo = NULL;
  jojo = fopen(argv[1], "r"); 
  if(jojo == NULL){
    exit(1);
  } 


if (jojo != NULL)
{


qui= fgetc(jojo); /* qui vient chercher tout ce qui bouge*/
while (qui != EOF)
        
        {

	sprintf(mot, "%s%d%s", action, qui, extension);
	system((char *)mot);
	system("xdg-open joris.wav");

        }  /*while (qui != EOF);*jusqua la fin du texte*/
        fclose(jojo);  
      }
        return 0 ;
      
    }  


  

Pour plus de détail, le code fonctionne, mais il ne se contente pas de lire une seule fois le fichier texte mis derrière, il le lit en boucle sans fin. Comme si la boucle du while, n'arrivait pas à s’arrêter à la fin du fichier.
Le but de ce code est de lire les caractères un à un au fur et à mesure de leur lecture.
Cordialement

Dernière modification par temps (Le 19/04/2013, à 17:02)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#2 Le 19/04/2013, à 06:12

pingouinux

Re : [résolu] boucle infinie en langage c

Bonjour,
La variable qui n'est pas modifiée dans la boucle.

Hors ligne

#3 Le 19/04/2013, à 17:04

temps

Re : [résolu] boucle infinie en langage c

Merci pour la réponse, j'ai trouvé un code qui marche mais j'ai toujours pas compris pourquoi, mes autres manières de faire les boucles ne marchaient pas, j'ai testé 5 techniques.
voici le code qui marche

/**pour*compiler*le*fichier*lire_texte.c***faire***/
/**gcc lire_texte.c -o lire_texte -Wall***/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fonctionlecteur()
{
	system("xdg-open joris.wav");
}

int main(int argc, char *argv[]) {
      
	char * extension = ".jo";
	char * action = "./lecteur ";
	char mot [30] ;
	int qui;
  /*j ouvre mon fichier & lire*/
  FILE* jojo = NULL;
  jojo = fopen(argv[1], "r"); 
  if(jojo == NULL){
    exit(1);
  } 


if (jojo != NULL)
{


while ((qui= fgetc(jojo)) != EOF) /* qui vient chercher tout ce qui bouge*/
        
        {
if (qui != '\n'){
/*	sprintf(mot, "%s%d%s", action, qui, extension);*bon*aussi*/
	sprintf(mot, "%s%c%s", action, qui, extension);
	system((char *)mot);
	fonctionlecteur();
}

        }  /*while (qui != EOF);*jusqua la fin du texte*/
        fclose(jojo);  

      }
        return 0 ;
      
    }  

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne