Problemas con salto de lineas al leer un fichero

Iniciado por petrusqui, 1 Abril 2012, 13:27 PM

0 Miembros y 1 Visitante están viendo este tema.

petrusqui

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 (cpp) [Seleccionar]

//Abrimos o creamos el fichero numeros_primos.txt
fichero_numero_primo = fopen("primos.txt", "r");

if (fichero_numero_primo == NULL)
printf ("No se ha podido abrir el fichero numeros_primos.txt");

else
{
    numero_primo = fgetc(fichero_numero_primo);
while (feof(fichero_numero_primo) == 0)
{
numero_primo = fgetc(fichero_numero_primo);
if (numero_primo = '/')
        printf("\n");
else
printf ("%d", numero_primo);
}
    fclose (fichero_numero_primo);
}

satu

Hola

Las comparaciones se hacen con == no con =


if (numero_primo == '/')


Además date cuenta de que al principio haces 2 lecturas

numero_primo = fgetc(fichero_numero_primo);
while (feof(fichero_numero_primo) == 0)
{
numero_primo = fgetc(fichero_numero_primo);


Así pierdes el primer número

Puedes sustituirlo por

while(feof(fgetc(fichero_numero_primo)) == 0)
{
if (numero_primo = '/')
        printf("\n");
else
printf ("%d", numero_primo);
}


Saludos
Breakbeat como forma de vida

petrusqui

Cita de: satu en  1 Abril 2012, 13:48 PM
Hola

Las comparaciones se hacen con == no con =


if (numero_primo == '/')


Además date cuenta de que al principio haces 2 lecturas

numero_primo = fgetc(fichero_numero_primo);
while (feof(fichero_numero_primo) == 0)
{
numero_primo = fgetc(fichero_numero_primo);


Así pierdes el primer número

Puedes sustituirlo por

while(feof(fgetc(fichero_numero_primo)) == 0)
{
if (numero_primo = '/')
        printf("\n");
else
printf ("%d", numero_primo);
}


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 (cpp) [Seleccionar]
numero_primo = fgetc(fichero_numero_primo);



Gracias otra vez! =D

cassiel83

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? 

cassiel83

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.