Salut à tous les experts C (s'il vous plaît ne tirez pas, je ne suis pas programmeur C plus, mais de temps en temps, j'ai une question qui apparaît dans mon esprit)Loops in C challenge: peut-il être fait autrement?
Je lisais une autre question (How to print an entered string backwards in C using only a for loop).
Le « simple » et la réponse la plus logique est
for (x = end; x >= 0; --x) {
printf("%c", word[x]);
}
Mais je me demandais s'il n'y avait pas un moyen d'atteindre le même objectif, mais rester plus près de la boucle d'origine poseted:
for (x = word[end]; x >= word[0]; x--) {
printf("%c", x);
}
Je ne sais pas assez C pour le travailler, mais ne pourrait-on jouer avec les pointeurs de tableaux à boucle à travers
char * wordp;
for(wordp = &word[end]; /*something*/; wordp--){\
printf("%c", &wordp);
}
P.S .: Je ne me soucie pas vraiment si c'est une boucle en avant ou en arrière.
P.P.S .: Désolé si j'ai fait des erreurs évidentes C dans les pointeurs; signalez-les dans le commentaire et je les éditerai. ;)
Jason
Bien sûr, vous pouvez, et il peut être plus efficace puisque incréments sont plus rapides que des ajouts sur certaines architectures. Un bon compilateur devrait cependant générer le même code avec les deux approches. –