[Solucionado]Problema con archivo

Iniciado por nicolasblues86, 15 Mayo 2010, 06:27 AM

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

nicolasblues86

Hola gente bueno les cuento que tengo un incomeniente con un programa que genera un archivo de texto y pone datos en él hasta ahí va perfecto
el problema es cunado quiero tomar esos archivos e imprimirlos en pantalla
no se si estoy tomando mal los datos del archivo o estoy ingresando mal los datos en el archivo, pero el tema es que me termina imprimiendo dos veces la ultima linea del archivo...


Bueno al final era un problema con como imprimía en pantalla lo que havia en el archivo de texto   




#include <stdio.h>
#include <string.h>
#include <stdlib.h>


typedef struct {
char *nm;
int dia;
int ms;
int aa;
char mes[11];
}Persona;



void entrada (Persona* p);
char* mes_asci (int n);


int main(int argc, char** argv)
{
FILE *pff;
char fn[] = "Personas.DAT";
char buf[121];

if ( (pff = fopen(fn,"a+t")) == NULL )
{
puts ("Error al abrir archivo");
exit (-1);
}

//while (!feof(pff))
       while (fgets (buf,121,pff))
      {

printf ("%s \n\n",buf);
 
}



Persona pt;

entrada (&pt);
fprintf(pff,"%s %d-%d-%d %s\n", pt.nm, pt.dia, pt.ms, pt.aa, pt.mes);

fclose(pff);
return 0;
}



void entrada (Persona * p)
{
char bf[80];

printf ("Escriba el nombre: ");
fgets (bf,80,stdin);
if (bf[strlen(bf) - 1] == '\n' )
bf[strlen(bf)] = '\0';
p->nm = (char*) malloc ((strlen (bf) + 1) * sizeof(char));
strcpy (p->nm, bf);
do
{
printf ("introduzca dia mes año (dd mm aaaa) : ");
fgets (bf, 80, stdin);
if (bf[strlen(bf) - 1] == '\n' )
bf[strlen(bf)] = '\0';
sscanf (bf,"%d %d %d%*c", &p->dia, &p->ms, &p->aa );
printf ("\n %s\n", mes_asci(p->ms));

} while  ( ( mes_asci(p->ms) == "Mes eroneo") || (p->dia > 31 || p->dia < 1 ) );

strcpy(p->mes, mes_asci(p->ms));

}

char* mes_asci (int n)

{
static char *mes[12] = {
"Enero", "Febrero", "Marzo", "Abril",
"Mayo", "Junio", "Julio", "Agosto", "Septiembre",
"Octubre", "Noviembre", "Diciembre" };

 
if (n >= 1 && n <= 12)
return mes[n-1];
else
return "Mes eroneo";


}






Solamente hay 10 clases de personas en el mundo los que saben leer binario y los que no