Impossible de rentrer dans une boucle for

fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005 - 21 juil. 2005 à 14:05
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 21 juil. 2005 à 16:52
Salut, j'ai un gros probleme qui me laisse sans réponse, je n'arrive pas à rentrer dans la boucle for suivante:
for(i=0;i<cptTimesArray;i++)
{
printf("Lecture des donnees\n");
fscanf(fIn, "%f %f %d", &bufDeterministTime ,&bufEspionsTime, &bufNbLMDs);


sumDeterministTime+=bufDeterministTime;
sumEspionsTime+=bufEspionsTime;
sumLMDs+=bufNbLMDs;
}
Quelqu'un peut-il m'expliquer ce qui se passe?
Merci.

11 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 juil. 2005 à 14:13
cptTimesArray est sûrement <= 0 donc tu ne rentre pas dans la boucle

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005
21 juil. 2005 à 14:30
En fait mon programme s'arrete plus tot, au niveau du if(fIn==NULL)
continue;

Voila le code complet:
void main(int argc, char **argv)
{
FILE *fIn=NULL;
FILE *fOut=NULL;
float randPercent, crossPercent, mutPercent, stepPercent=10.0f;
float alpha, orangeSkin, lmdsSize = 10.0, bvSize;
int nbPions = 500;
int nbGen = 10;
int cptTimesArray = 0,i;
int cptposition = 0;
char filename [64],filename_results [64];
float bufEspionsTime, bufDeterministTime;
int bufNbLMDs;
float sumDeterministTime, sumEspionsTime;
int sumLMDs;sprintf(filename_results,"%s_%d","results/ESP_static",
(int)lmdsSize);
strcat(filename_results, ".xls");
fOut=fopen(filename_results,"wt");
fprintf(fOut, "Determinist Time\tEspions Time\tNb LMDs:\n");


printf(" Debut de l'analyse des donnees\n");
for(randPercent=0.0;randPercent<=100.0;randPercent+=stepPercent)
{
for(crossPercent=0.0;crossPercent<=100.0-randPercent;crossPercent+=stepPercent)
{
mutPercent = 100.0 - randPercent - crossPercent;
{
for(bvSize=1.0;bvSize<=30.0;bvSize += 2.0)
{
for(lmdsSize=10.0, alpha=1.0; alpha<=5.0; alpha += 0.2)
{
orangeSkin = alpha * lmdsSize;


/*sprintf(filename,"%s%s_%d_%d_%d_%d_%d",iFolder,
"times/ESP_static_",
(int)randPercent,
(int)crossPercent,
(int)mutPercent,
(int)orangeSkin,
(int)bvSize);*/

sprintf(filename,"%s_%d_%d_%d_%d_%d","times/ESP_static",
(int)randPercent,
(int)crossPercent,
(int)mutPercent,
(int)orangeSkin,
(int)bvSize);


fIn=fopen(filename,"rt");

if(fIn==NULL)
continue;

sumDeterministTime = 0.0;
sumEspionsTime = 0.0;
sumLMDs = 0;

for(i=0;i<cptTimesArray;i++)
{
printf("Lecture des donnees\n");
fscanf(fIn, "%f %f %d", &bufDeterministTime ,&bufEspionsTime, &bufNbLMDs);


sumDeterministTime+=bufDeterministTime;
sumEspionsTime+=bufEspionsTime;
sumLMDs+=bufNbLMDs;
}


fprintf(fOut, "%f\t%f\t%d\n", (float)sumDeterministTime, (float)sumEspionsTime, (int)sumLMDs);
fclose(fOut);
fOut=NULL;
}
}
}
}
}

printf(" Fin de l'analyse des donnees\n");
}
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 juil. 2005 à 14:59
Premièrement, filename n'a pas d'extension (alors que filename_results oui) mais ce n'est peut-être pas nécessaire...

Deuxièmement, est-ce que 64 caractères pour tes noms de fichiers suffisent?

Troisièmement, cptTimesArray est initialisé à 0 mais ne change jamais de valeur donc tu ne risque pas d'entrer dans ta boucle

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006
21 juil. 2005 à 15:04
Si ton fopen est toujours null, ton continue te fait boucler sur la boucle
for(lmdsSize=10.0, alpha=1.0; alpha<=5.0; alpha += 0.2)
sans jamais passer dans la suite du code...

Essaye d'afficher un message pour vérifier que ton ouverture se fait bien...
0

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

Posez votre question
fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005
21 juil. 2005 à 15:12
Le probleme ne vient pas de l'extension de filename ou du nombre de carctères, j'ai déjà vérifié çà. Par contre je ne parviens pas à changer le valeur du cptTimesArray et quand je le remplace par un entier, çà ne marche pas non plus.
Je ne vois pas du tout comment faire cela alors si tu as une idée, elle sera la bienvenue chez moi!!!
0
fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005
21 juil. 2005 à 15:31
Effectivement, il semble bien que le probleme vienne du fait que le fopen est toujours null mais les fichiers a traiter sont dans le répertoire "times" et ils contiennent tous des données alors je comprends pas.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 juil. 2005 à 15:34
Quand tu mets un cheùin de fichier dans une chaine de caractères, n'oublie pas de doubler le caractère '\':

fprintf(chaine,"%s_%d",'C:\\test\\truc, i);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005
21 juil. 2005 à 16:12
Je ne met aucun chemin d'acces mais mon fichier results se crée dans le bon repertoire donc je ne comprends pas pourquoi la lecture poserais un pb.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 juil. 2005 à 16:27
sprintf(filename,"%s_%d_%d_%d_%d_%d","times/ESP_static",


(int)randPercent,


(int)crossPercent,


(int)mutPercent,


(int)orangeSkin,


(int)bvSize);



Moi, je ferais:

sprintf(filename,"%s_%d_%d_%d_%d_%d","times\\ESP_static",


(int)randPercent,


(int)crossPercent,


(int)mutPercent,


(int)orangeSkin,


(int)bvSize);

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
fred100582 Messages postés 37 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 6 décembre 2005
21 juil. 2005 à 16:33
Le probleme ne vient pas de là, je craque!!!
tu ne sais pas ce qui peut provoquer le fopen toujours null, je crois vraiment que le pb est là.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
21 juil. 2005 à 16:52
Pourquoi fopen(filename,"rt") et non pas fopen(filename,"r") tout court?

Il faut savoir que fopen retourne NULL s'il n'a pas réussi à ouvrir le
fichier. Alors soit il n'existe pas, soit tu n'as pas les droits pour
l'ouvrir...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
0
Rejoignez-nous