aca pongo el codigo es uno ya escrito que lo unico que quise es optimizarlo el codigo fue publicado ya pero para no mesclar las dudas cree un tema aparte
es el codigo que puse no puse todo el codigo ya que crei que no era necesario ya que por donde creo q viene el problema talvez sea por el ingreso de datos que es la informacion que quiero guardar.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct datos {
char nombre [15];// nombre del usuario
char pass [6];//password del usuario
char acceso [21];//acceso del usuario
char tipo [2];//tipo de acceso
};
void main()
{ int i=1;
datos regin;
FILE *pf; // apunta al archivo
pf=fopen ("C:\\users.txt","at+");
// C:\Program Files\Counter-Strike\cstrike\addons\amxmodx\configs
if (pf==NULL)
{
printf ("ERROR DE LECTURA");
getch();
exit(1);
}
for(i=1;i<=1;i++) {
printf ("\nINGRESE NOMBRE DE USUARIO:");
gets (regin.nombre);
printf ("\nINGRESE PASSWORD DE USUARIO:");
gets (regin.pass);
printf ("\nINGRESE ACCESO:");
gets (regin.acceso);
printf ("\nINGRESE TIPO DE ACCESO:");
gets (regin.tipo);
fwrite (®in,sizeof(datos),1,pf);
}
fclose (pf);
//re leo grabacion y compruebo
pf=fopen ("C:\\users.txt","r");
if (pf == NULL){
printf ("ERROR DE ACCESO");
getch();
exit(1);
}
fread (®in,sizeof (datos),1,pf);
while (!feof(pf)){
fread (®in,sizeof (datos),1,pf);
printf("NOMBRE DE USUARIO:%s PASS:%s ACCESO:%s TIPO DE ACCESO:%s",regin.nombre,regin.pass,regin.acceso,regin.tipo);
fread (®in,sizeof (datos),1,pf);
}
fclose (pf);
getch();
}
edito: bueno ahi por lo q veo que dice littlehorse voy a cambiar el gets pro un fgets aver que pasa
strlen: calcula la longitud de la cadena, no incluye el "\0" del final
sleep: si no me equivoco es un tiempo de espera sleep (1000); un segundo aunque la diferencia con delay (1000); no se cual es tube varios problemas una vuelta a programar en tc me andabla el delay pero en borlard o dev ninguna de las dos jaja me tiraba error de compilacion en esas lineas
EI: juntando mensajes.Sigo con el problema ultimamente viendo, por ahi es un problema en las cadenas
aver como explicarme
en primer lugar vamos ignorar el overflow, por ahora.
bueno tengo q puedo ingresar en nombre 15 caracteres en pass 6 caracteres, ect
ahora esto esta dentro de una estructura para mi el error esta en que si ingreso en nombre 10 caracteres me estan sobrando 5 caracteres talves rellena los suigientes 5 caracteres con basura del buffer osea por lo q tenia entendido al apretar la tecla enter este actua como \0 o \n dependiendo que use
bueno ahora mi pregunta como implemento algo para q coloque el \0 al final de la cadena ingresada
en este momento estoy pensando en un strlen para q me cuente la longitud de la cadena y colocar un \0 al final de la cadena ingresada pero no se como implementarlo i si es de esta manera q deberia hacerlo.