Invertir cada línea específica en una cadena

Estoy intentando revertir mis líneas dentro de un archivo de texto usando el método de recursión. Estoy bastante atascado en este momento y mi salida actual es un error de segmentación. ¿Puede alguien explicar de qué proviene el error de segmentación y empujarme en la dirección correcta?

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 

Recibes un error de segmentación porque tienes un || condiciona en tu primera statement if, donde una de esas condiciones siempre será verdadera, haciendo que tu stack se desborde de la recursión infinita! ¡Cambie esto a un && y debería estar todo arreglado!

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

EDITAR: Además, creo que se va a encontrar con una funcionalidad incorrecta debido a la segunda getchar (). Yo cambiaría tu función a:

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

De lo contrario, va a leer potencialmente 2 caracteres en cada iteración y eso hará que se omitan uno o ambos.