#1 Le 18/04/2013, à 22: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, à 16: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
https://www.letime.net
Hors ligne
#2 Le 19/04/2013, à 05: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, à 16: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
https://www.letime.net
Hors ligne