Mon programme ne s’arrête pas à condition

Donc, mon programme ne s’arrête pas sous condition (str2 [o]! = ‘+’) Donc si quelqu’un sait pourquoi et comment le réparer, il m’aidera (:

c’est mon code –

#include  #include  #include  int main() { char str3[9]= "2+48*4+7"; char str2[9]; int w =0,o = 0; for(w = 0; w < 9; w++) { if(str3[w] == '*') { while(str2[o] != '+') { str2[o] = str3[w]; o++; w++; } } } printf("%s\n",str2); } 

Merci à tous ceux qui peuvent voir et me dire pourquoi le programme ne s’arrête pas à la condition spécifiée.

Cette ligne

 while(str2[o] != '+') 

provoque un comportement non défini car les éléments de str2 n’avaient pas été correctement initialisés avant d’être lus.

Pour résoudre ce problème

 char str2[9] = "": 

Au moment où + sera copié dans str2, o index indiquera le prochain caractère, qui ne sera probablement pas + , donc votre condition ne sera jamais vraie. Cela pourrait être une solution possible:

  do { str2[o] = str3[w]; o++; w++; } while(str2[o-1] != '+' ); 
 while(str2[o] != '+') { str2[o] = str3[w]; o++; w++; } 

Supposons o == x. Vous atsortingbuez une valeur à str2 [x]. En attendant, vous voyez si str2 [x + 1] == ‘+’, mais str2 [x + 1] est vide.

vous devez vérifier la dernière valeur mise à jour dans str2, mais vous vérifiez la valeur suivante qui n’est pas initialisée avec un caractère afin que la boucle continue à se répéter. tu peux le faire:

 while(str2[o-1] != '+'){ str2[o] = str3[w]; o++; w++; }