Quand une instruction if ou for n´est suivie que d´une seule instruction, les accolades sont facultatives.
for(int i = 0; i < j; i++)
j--;
ne sera pas compté comme une erreur.
Sinon, pour ton problème, tu dis que les chaînes sont identiques si la fonction renvoie 0, or dans ton morceau de code tu dis que si deux caractères sont identiques alors la fonction renverra 1 (à moins que je n´ai pas compris). De plus, quand la fonction trouve deux caractères différents, elle doit s´arrêter tout de suite et retourner 1. Là toi tu fais l´impasse sur l´arrêt de la fonction.
Supposons deux chaînes : "aedfgt" et "aedggt".
Ta boucle regarde ´a´ et ´a´, c´est bon : resultat = 1.
Ta boucle regarde ´e´ et ´e´, c´est bon : resultat = 1.
Ta boucle regarde ´d´ et ´d´, c´est bon : resultat = 1.
Ta boucle regarde ´f´ et ´g´, c´est pas bon : resultat = 0.
Et là, tu te dis, mais j´ai ma condition du while ! Ben non, les priorités des opérateurs font que le && est évalué avant le ||, donc la condition :
caractereActuel1 != ´\0´ && caractereActuel2 != ´\0´
va renvoyer 1 et la condition
resultat = 1
va renvoyer 0 et 0 OU 1 = 1, donc ta boucle continue.
Ta boucle regarde ´g´ et ´g´, c´est bon : resultat = 1.
Ta boucle regarde ´t´ et ´t´, c´est bon : resultat = 1.
(bon là c´est fait en supposant que la fonction renvoie 1 si c´est bon et 0 si ce n´est pas le cas, donc à adapter)