Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/12/2015, 03:03
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Programa del reves C

Tienes que acostumbrarte a probar tus códigos con lápiz y papel. Más adelante sería altamente recomendable que aprendieses a utilizar el depurador de código.

Primer problema:

Código c:
Ver original
  1. while (!feof(f)){
  2.   fgets(texto,MAX_BUFFER,f);
  3. }

Se supone que tu programa ha de leer línea a línea... tu programa va a leer la primera línea, después la segunda... en el mismo sitio donde se encontraba la primera... y así. Cuando haya terminado únicamente vas a encontrar en texto el contenido de la última línea. Quizás el while debería abarcar también la función que invierte el texto.

Segundo problema:

Código C:
Ver original
  1. int i,j;
  2.   j=0;
  3.  
  4.   for(i=strlen(texto)-1; i>=0; i--){
  5.     reverso[j]=texto[i];
  6.     j++;
  7.   }

Imagina que consigues que tu programa lea dos líneas "hola" y "adios"
  1. j = 0
  2. i = strlen("hola")-1 = 3
  3. reverso[0] = texto[3]
  4. j = j+1 = 1, i = i-1 = 2
  5. reverso[1] = texto[2]
  6. j = j+1 = 2, i = i-1 = 1
  7. reverso[2] = texto[1]
  8. j = j+1 = 3, i = i-1 = 0
  9. reverso[3] = texto[0]
  10. j = j+1 = 4
  11. i = strlen("adios")-1 = 4
  12. reverso[4] = texto[4]

¿Ves algo raro en el paso 12? Eso pasa por no inicializar j antes de procesar una línea. A nada que pruebes el código con lápiz y papel aprendes a ver estas cosas... aunque, como te he comentado, quitarse el miedo y aprender a usar el depurador de código es de las mejores decisiones que puedes tomar a la hora de programar.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.