Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

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.

À propos de l'équipe du forum.

#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.

En 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