Plantage inexpliqué

graall Messages postés 27 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 2 novembre 2005 - 1 sept. 2005 à 16:38
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007 - 1 sept. 2005 à 20:56
bonjour,

j'ai un problème avec ce code :



getch();



FILE *pHtml;

int nb_char = 0;

bool sortie = false;



for(int i=0;i<=nb_html;i++) // nb_html c'est un
nombre de fichier dans le tableau html_list (voir plus bas)

{

pHtml = fopen(html_list[i],
"r"); // html_list est un tableau contenant des noms de fichiers



while(!sortie)

{

getc(pHtml);

if(feof(pHtml))

sortie = true;

else

nb_char++;

}

std::cout <<
html_list[i] << " : " << nb_char << " caracteres."
<< std::endl;



fclose(pHtml);

nb_char = 0;

sortie = false;

}



il n'y a pas d'erreur à la compilation par contre le programme plante dès qu'on le lance...

autre phénomène étrange, cet autre code (presque identique) ne compile pas (Permission denied ; Id returned 1 exit status) :



getch();

FILE *pHtml;

int nb_char = 0;

bool sortie = false;



for(int i=0;i<=nb_html;i++)

{

pHtml = fopen(html_list[i], "r");



while(!sortie)

{

getc(pHtml);

if(feof(pHtml))

sortie = true;

else

nb_char++;

}

std::cout <<
html_list[i] << " : " << nb_char << " caracteres."
<< std::endl;



fclose(pHtml);

nb_char = 0;

sortie = false;

}



merci pour aide :)



PS : j'utilise Dev-c++ 4.9.9.2

5 réponses

vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
1 sept. 2005 à 18:58
while(!sortie)

{

getc(pHtml);

if(feof(pHtml))

sortie = true;

else

nb_char++;

}



peut etre optimisée par



while(1)

{

getc(pHtml);

if(feof(pHtml))

break;

else

nb_char++;

}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 sept. 2005 à 19:04
Je pense qu'il est inutile d'optimiser un programme avant de le déboguer, tu crois pas?
graall> Pour le 2ème code, on dirait que ld (editeur de liens) n'a pas accès à l'exécutable.
Teste la valeur de retour de fopen pour voir, et essaie de ne pas mélanger le C et le C++ comme tu le fais ici (fopen, cout)
0
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
1 sept. 2005 à 19:32
Les 2/4 de mes bug je les case en optimisant mon programme, optimiser permet :



> une seconde lecture + attentive

> une meilleur visibilité dans le programme

> des fois en optimisant on se rend compte des bug
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
1 sept. 2005 à 19:49
Les 2/4 ca fait la moitié et pour le reste je suis pas du tout d'accord. Il faut juste une seconde lecture plus attentive. Ca sert a rein de modifier de code que tu va devoir sans doute complètement réécrire, chaque chose en son temps
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
1 sept. 2005 à 20:56
Hello,



Est-ce que t'as essayé de remplacer for(int i=0;i<=nb_html;i++) par for(int i=0;i<nb_html;i++), parce que des fois ça plante lorsqu'on sort d'un tableau.
0
Rejoignez-nous