2010-07-20 7 views
0

J'ai une boucle similaire à celle-ci.pour loop to while loop + condition supplémentaire

int total1, total2; 
for (total1 = fsize(myfile);;) { 
    total2 = fsize(myfile); 
    ... 
    ... 
    total1 = total2; 
} 

Ce que je voudrais faire est de convertir en une boucle while et vérifier une condition supplémentaire avant la fin de la boucle.

Je voudrais faire quelque chose comme ceci:

while((total1 = fsize(myfile)) && input = getch() != 'Q') { 
    total2 = fsize(myfile); 
    ... 
    total1 = total2; 
} 

Merci

+6

est-il une question ici? – bstpierre

+3

allez-y. Vous devriez mettre entre parenthèses '((input = getch())! = 'Q')'. – AShelly

+0

En fait, pour une raison ou pour une autre, il n'est pas dans la boucle ... donc je ne suis pas tout à fait sûr si je fais la boucle while correctement ou non. –

Répondre

-1

Vous pouvez utiliser un pour:

for(total1 = fsize(myfile); (input = getch()) != 'Q';) { 
    ... 
} 
+0

Vous pouvez * toujours * utiliser un "pour" à la place d'un certain temps. Remplacez simplement "while" par "for" et mettez des points-virgules juste avant et après la condition. –

+0

@ T.E.D .: Bien sûr. J'essayais de deviner la réponse que l'OP recherchait –

0

Peut-être que vous vouliez dire

while((total1 == fsize(myfile)) && ((input = getch()) != 'Q')) { 
    total2 = fsize(myfile); 
    ... 
    total1 = total2; 
} 

esprit les opérateurs = est comme signature == est la comparaison

+0

Et peut-être que vous vouliez ne pas changer la seconde '=' à '=='. – IVlad

+0

vient de remarquer que, fixe. – JohnFx

+0

Il est presque impossible de dire exactement ce qu'il voulait dire sans beaucoup plus de contexte. –

0

La partie 'initialisation' de la boucle for total1=fsize(myfile) fait maintenant partie de la condition testée dans votre boucle while. Est-ce que c'est ce que vous vouliez?

Êtes-vous sûr que vous ne vouliez pas ...

total1 = fsize(myfile); 

while((input = getch()) != 'Q') { 
    total2 = fsize(myfile); 
    ... 
    total1 = total2; 
} 
0

L'initialisateur dans une boucle est effectuée uniquement une fois. Le while équivalent de

for (total1 = fsize(myfile);;) { 

est

total1 = fsize(myfile); 
while (1) { 

Vous mentionnez d'ajouter la condition input = getch() != 'Q'.

Notez que l'affectation (=) est plus faible priorité que la comparaison (!=), afin d'assigner getch()-input et vérifier que le personnage était pas un Q dont vous avez besoin entre parenthèses autour de la assignement:

total1 = fsize(myfile); 
while ((input = getch()) != 'Q') {