Ayuda con Archivos

Iniciado por jscrip, 4 Febrero 2013, 07:57 AM

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

rir3760

Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña.

Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin).

Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

0xDani

Si el archivo no esta creado cuando ejecutas el programa, tengo entendido que fopen() no lo crea si le pasas "r" como modo de apertura.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

jscrip

Cita de: 0xDani en  4 Febrero 2013, 17:26 PM
Si el archivo no esta creado cuando ejecutas el programa, tengo entendido que fopen() no lo crea si le pasas "r" como modo de apertura.

Saludos.
El archivo se crea con otra funcion, en el menu del programa se debe crear el archivo con una funcion sino no entra a la funcion de comprobacion, eso esta validado

jscrip

Cita de: rir3760 en  4 Febrero 2013, 17:16 PM
Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña.

Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin).

Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo.

Un saludo
El contenido del erchivo es de esta manera:

user, password
user, password
user, password
user, password

jscrip

Esta funcion crea el archivo:

void opcion1()
{
   FILE *p;
   p = fopen("accesobanco.txt", "w++");
   fprintf(p, "%s, %s","useras34", "ae78");
   fprintf(p, "%s, %s","\nuseras32", "ui99");
   fprintf(p, "%s, %s","\nuseras45", "eo76");
   fprintf(p, "%s, %s","\nuserasg6", "ie44");
   fclose ( p );
}

naderST

Me parece que el formato que le estás dando a tu archivo no es el correcto, prueba con esto:


void opcion1()
{
   FILE *p;
   p = fopen("accesobanco.txt", "w");
   fprintf(p, "%s, %s","useras34", "ae78\n");
   fprintf(p, "%s, %s","\nuseras32", "ui99\n");
   fprintf(p, "%s, %s","\nuseras45", "eo76\n");
   fprintf(p, "%s, %s","\nuserasg6", "ie44\n\n");
   fclose ( p );
}

0xDani

"w++" no es ningun modo de apertura valido para fopen(), supongo que sera "w+".
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

jscrip

Cita de: naderST en  4 Febrero 2013, 18:21 PM
Me parece que el formato que le estás dando a tu archivo no es el correcto, prueba con esto:


void opcion1()
{
   FILE *p;
   p = fopen("accesobanco.txt", "w");
   fprintf(p, "%s, %s","useras34", "ae78\n");
   fprintf(p, "%s, %s","\nuseras32", "ui99\n");
   fprintf(p, "%s, %s","\nuseras45", "eo76\n");
   fprintf(p, "%s, %s","\nuserasg6", "ie44\n\n");
   fclose ( p );
}

Lo volví a probar en linux y me funcionó, si lo voy ejecutando por pasos se llena de basura en visual studio.
fgets( S1, sizeof(S1), stdin );

De todos modos muchas gracias.
Saludos.