Inverser chaque ligne spécifique dans une chaîne

J’essaie d’inverser mes lignes dans un fichier texte à l’aide de la méthode de récursivité. Je suis assez bloqué en ce moment et ma sortie actuelle est une erreur de segmentation. Quelqu’un peut-il expliquer l’erreur de segmentation et me pousser dans la bonne direction?

void RecursionLine(); int main (int argc, char argv) { RecursionLine(); printf("\n"); } void RecursionLine() { int c; if((c = getchar()) != EOF || (c != '\n')) { RecursionLine(); printf("%c",c); } else if((c = getchar()) != EOF && (c == '\n')){ printf("\n"); RecursionLine(); } } Input: Dogs Cats Boys Output sgoD staC syoB 

Vous obtenez une erreur de segmentation parce que vous avez un || condition dans votre première instruction if, où l’une de ces conditions sera toujours vraie, entraînant un débordement de votre stack suite à une récursion infinie! Changez ceci en un && et tout devrait être corrigé!

 if((c = getchar()) != EOF && (c != '\n')) 

EDIT: De plus, je pense que vous allez rencontrer des problèmes de fonctionnalité en raison du second getchar (). Je changerais votre fonction pour:

 void RecursionLine() { int c = getchar(); if(c != EOF || c != '\n') { RecursionLine(); printf("%c",c); } else if(c != EOF && c == '\n'){ printf("\n"); RecursionLine(); } } 

Sinon, vous allez potentiellement lire 2 caractères à chaque itération, ce qui fera sauter l’un / les deux!