Muchas gracias por tu rápida respuesta. El código funciona aunque aun persiste un algún problema que no consigo resolver.
Ya lee varios argumentos y devuelve el reverso del texto pero aun tengo un problema que no logro entender.
Estos son los argumentos que he utilizado:
fich.txt:(que contiene)
fila uno
fila dos
fila tres
fich1.txt:(que contiene)
fila cuatro
fila cinco
fila seis
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BUFFER 2048
int main(int argc, char *argv[])
{
int i,j,t;
j=0;
char texto[MAX_BUFFER];
char reverso[MAX_BUFFER];
FILE *f;
for(t=1;t<argc;t++){
f=fopen(argv[t],"r");
while (!feof(f)){
fgets(texto,MAX_BUFFER,f);
//printf("%s",texto);
for(i=strlen(texto)-1; i>=0; i--){
reverso[j]=texto[i];
j++;
}
}
printf("%s\n",reverso);
j=0;
}
system("PAUSE");
return 0;
}
el resultado al ejecutar
delreves.c fich.txt fich1.txt
es el siguiente :
sao@ubuntu:~/Desktop/C$ ./a.out fich fich1
onu alif
sod alif
sert alif
sert alif
ortauc alif
ocnic alif
sies alif
sies alif
No comprendía porque imprimía dos veces la ultima fila por lo que introduje un printf en el while para ver si el problema estaba en el while (el printf que se encuentra en forma de comentario). Al hacer esto verifique que en efecto el problema estaba en el while por lo que siguiendo tu consejo lo hice paso a paso para tratar de encontrar mi error, pero en papel el resultado que obtuve fue correcto. Por lo que decidi cambiar la condición del while ya que lo único que se me ocurrio fue que el feof no hiciera lo que pensaba que es indicar el fin del contenido del archivo.
Este fue el cambio que realice.
Código:
while (fgets(texto,MAX_BUFFER,f) !='\0'){
fgets(texto,MAX_BUFFER,f);
Lo que pretendía hacer con este cambio es que el bucle se parara cuando encontrara un byte NULL (lo que si no me equivoco correspondería al final del fichero.
Pero ahora al ejecutar no me imprime la primera linea de cada argumento -_-' .
de esta forma:
sod alif
sert alif
ocnic alif
sies alif
Gracias nuevamente por tu tiempo. Un saludo.