Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/12/2015, 06:44
saomola
 
Fecha de Ingreso: diciembre-2015
Mensajes: 6
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Programa del reves C

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.