Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: petrusqui en 1 Abril 2012, 13:27 pm



Título: Problemas con salto de lineas al leer un fichero
Publicado por: petrusqui en 1 Abril 2012, 13:27 pm
Buenas,

Hace poco que he empezado en C++ y ahora estoy intentado usar los ficheros. Y me he quedado estancado en un error. Os dejos una breve explicación de lo que hace el programa.
Calcula los números primos.
Imprime los números en un archivo "primos.txt" separándolos por una barra "/". Por ejemplo: "2/3/5/7/11".
Si el usuario quiere leer los números primos el programa tendría que hacer lo siguiente: si hay un número imprime el número, si hay una "/" hace un salto de linea.

Código donde creo que esta el problema:
Código
  1. //Abrimos o creamos el fichero numeros_primos.txt
  2. fichero_numero_primo = fopen("primos.txt", "r");
  3.  
  4. if (fichero_numero_primo == NULL)
  5. printf ("No se ha podido abrir el fichero numeros_primos.txt");
  6.  
  7. else
  8. {
  9.    numero_primo = fgetc(fichero_numero_primo);
  10. while (feof(fichero_numero_primo) == 0)
  11. {
  12. numero_primo = fgetc(fichero_numero_primo);
  13. if (numero_primo = '/')
  14.        printf("\n");
  15. else
  16. printf ("%d", numero_primo);
  17. }
  18.    fclose (fichero_numero_primo);
  19. }


Título: Re: Problemas con salto de lineas al leer un fichero
Publicado por: satu en 1 Abril 2012, 13:48 pm
Hola

Las comparaciones se hacen con == no con =

Código
  1. if (numero_primo == '/')
  2.  

Además date cuenta de que al principio haces 2 lecturas
Código
  1. numero_primo = fgetc(fichero_numero_primo);
  2. while (feof(fichero_numero_primo) == 0)
  3. {
  4. numero_primo = fgetc(fichero_numero_primo);
  5.  

Así pierdes el primer número

Puedes sustituirlo por
Código
  1. while(feof(fgetc(fichero_numero_primo)) == 0)
  2. {
  3. if (numero_primo = '/')
  4.        printf("\n");
  5. else
  6. printf ("%d", numero_primo);
  7. }
  8.  

Saludos


Título: Re: Problemas con salto de lineas al leer un fichero
Publicado por: petrusqui en 1 Abril 2012, 17:45 pm
Hola

Las comparaciones se hacen con == no con =

Código
  1. if (numero_primo == '/')
  2.  

Además date cuenta de que al principio haces 2 lecturas
Código
  1. numero_primo = fgetc(fichero_numero_primo);
  2. while (feof(fichero_numero_primo) == 0)
  3. {
  4. numero_primo = fgetc(fichero_numero_primo);
  5.  

Así pierdes el primer número

Puedes sustituirlo por
Código
  1. while(feof(fgetc(fichero_numero_primo)) == 0)
  2. {
  3. if (numero_primo = '/')
  4.        printf("\n");
  5. else
  6. printf ("%d", numero_primo);
  7. }
  8.  

Saludos

¡Gracias! Ya lo he solucionado, no me habia fijado que faltaba un igual :P A y ahora he puesto el código de más abajo al final de printf, así no me salto ningun carracter :P
Código
  1. numero_primo = fgetc(fichero_numero_primo);
  2.  


Gracias otra vez! =D


Título: Re: Problemas con salto de lineas al leer un fichero
Publicado por: cassiel83 en 3 Abril 2012, 17:41 pm
Hola este código me parece muy útil, por lo que entiendo se esta tomando los caracteres entre las separaciones "/" y se devuelven como enteros, por lo que "numero_primo" tendría que estar declarado al inicio como tal verdad?. Pero y si tuviera cadenas entre las separaciones (cad1/cad2/cad3/cad4), como podria hacer para tomar cada cadena y pasarla a una variable?, en este caso ya no se podria usar fgetc o me equivoco? 


Título: Re: Problemas con salto de lineas al leer un fichero
Publicado por: cassiel83 en 4 Abril 2012, 20:11 pm
Hola, gracias a Durasno ya lo he resuelto si a alguien le interesa la solución esta al final de este hilo:

http://foro.elhacker.net/programacion_cc/busqueda_desde_txt_en_c-t358256.0.html

saludos.