Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con un problema

Estas en el tema de ayuda con un problema en el foro de C/C++ en Foros del Web. hola gente, soy nuevo y la verdad me dieron un problema que por logica no es dificil de hacerlo pero tengo un problema con el ...
  #1 (permalink)  
Antiguo 24/05/2009, 10:12
 
Fecha de Ingreso: mayo-2009
Mensajes: 2
Antigüedad: 15 años
Puntos: 0
ayuda con un problema

hola gente, soy nuevo y la verdad me dieron un problema que por logica no es dificil de hacerlo pero tengo un problema con el compilador en el codigo, quiero ingresar registros en un bucle y la funcion gets me da problemas con la memoria y no puedo solucionarlo ni con un getch.. les dejo el codigo a ver si alguien me puede ayudar:

Código:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct persona{
               char nombre[30];
               int dni;
               char sexo;
              } ;

int main ()
{
    // variables
    char res='S';
    persona datos;
    FILE *archivo;
    // abro archivo para agregar
    archivo=fopen("c:\\personas.txt","a");
    // agregar registro
    while(res=='S'||res=='s')
    {
     // agrego datos
     system("cls");
     printf("Nombre:");
     gets(datos.nombre); 
     printf("\nDNI:");
     scanf("%d",&datos.dni);
     printf("\nSexo:");
     scanf("%c",&datos.sexo);
     // agrego registro en archivo personas.txt
     fprintf(archivo,"%s %d %c\n",datos.nombre,datos.dni,datos.sexo);
     // el \n al final de la linea indica el fin del registro
     printf("\n\nRegistro Agregado!");
     // pregunto si quiero agregar mas
     printf("\nDeseas agregar otro registro? S/N");
     scanf("%c",&res);
    }
    // cerrar archivo
    fclose(archivo);
    // pausar
    system("pause>nul");
    return 0;
}
en el programa cuando lo ejecuto a veces me pasa de largo cuando quiero ingresar algunas de las 3 variables..
gracias por leer
  #2 (permalink)  
Antiguo 24/05/2009, 15:36
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: ayuda con un problema

Hola, prueba para recoger las variables de tipo string con:

scanf("%[^\n]", nombrevariable); en vez del gets que usas tu, o sino un scanf("%d", nombrevar) y depues del scanf usa flushall()

y para manejar archivos prueba con fwrite y fread.
__________________
No diseñes usando tablas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.