Je suis en train d'écrire un simple exécutant de la machine d'Etat en C. J'ai ce code:Pourquoi ne pas incrémenter z?
while(1) {
strcpy(fsm.state[x][z], lines[i]);
printf("%i %i\n", x, z);
z++; i++;
if(strcmp(lines[i], ".") == 0) x++; z = 0;
if(strcmp(lines[i], "") == 0) break;
}
Je ne comprends pas pourquoi, si z ne doit être remis à zéro lorsque la ligne actuelle je lis de la lignes est égal à ".", Ce qui se produit toutes les trois occurrences dans mon scénario de test, z reste égal à 0, même lorsque x est incrémenté avec succès toutes les trois lignes.
je besoin d'une sortie comme ceci:
1 0 \ n 1 1 \ n 1 2 \ n 2 0 \ n 2 1 \ n 2 2 \ n 3 0 \ n 3 1, etc .. .
Au lieu de cela je reçois:
1 0 \ n 1 0 \ n 1 0 \ n 2 0 \ n 2 0 \ n 2 0 \ n 3 0 \ n 3 0, etc. ..
Qu'est-ce que je dois changer? C'est peut-être une question stupide, mais je ne comprends vraiment pas ce qui ne va pas ici.
Nous vous remercions de votre aide.
+1 Il est intéressant de noter que lorsqu'ils ne sont pas en utilisant des accolades, seule la première instruction est exécutée sous condition, à savoirjusqu'au point-virgule, pas le saut de ligne. – Skilldrick
ou, dans ce cas, vous pouvez mettre un ',' au lieu de ';';); – ruslik
Merci, donc c'était juste parce que je n'ai pas utilisé d'accolades. Ma faute. –