elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con un void
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con un void  (Leído 1,842 veces)
grossgore

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Problema con un void
« en: 3 Mayo 2017, 23:11 pm »


   Buenas tengo el siguiente problema... tengo un proceso de registro y toda la cuestion y hay un problema que tengo cuando pregunta si  desea agregar otra persona de que cuando presiona s se cierra el programa y no me vuelve a ejecutar el proceso... esto sucede cuando llamo a una funcion  despues de guardar los datos suministrados en un archivo, el proceso funciona correctamente cuando no llama a la funcion con esto me refiero a que si presiono s me vuelve a ejecutar el programa, tanto el proceso como la funcion funcionan correctametnes por separados. No se si me explique bien pero mas o menos di a entender mi problema

Código
  1. aporte(); // Este es el llamado a la funcion
  2.  
  3. printf("Desea agregar a otra persona (s/n):");
  4. scanf("%c",&rpt);
  5.  
  6. }while(rpt == 's');
   


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con un void
« Respuesta #1 en: 4 Mayo 2017, 00:08 am »

Limpia el buffer de entrada poniendo después del scanf
Código:
while(getchar()!='\n');


En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Problema con un void
« Respuesta #2 en: 4 Mayo 2017, 16:10 pm »

Problema tipico de scanf, no limpia el buffer de memoria y provoca ese tipo de inconvenientes, desde hace mucho se considera a scanf como una función rota, o simplemente de las malas.

Considera usar funciones más eficientes como fgets o sscanf, en los que tienes que declarar espacios de memoria para almacenar el buffer dedicado para pasar la función y realizar una lectura apropiada de la variable.

Ejemplo de fgets:

Código
  1. #define ROW_BUFF_LEN 128
  2. char row_buffer[ROW_BUFF_LEN] ;
  3. for (i = 0; i < rows; ++i)
  4. {
  5.    fgets( row_buffer, MAX_ROW_LEN, stdin ) ;
  6.    while( sscanf("%d", &arr[i][j++]) == 1 )
  7.    {
  8.        ++j;
  9.    }
  10. }
  11.  

Ejemplo de sccanf (un poco más enredado, pero pues su uso es para obtener una información determinada que luego se muestra al usuario, no para validación ni para control de flujos como ciclos while)

Código
  1. #include<stdio.h>
  2. #define LINESIZE 1024
  3.  
  4. int n, sum =0;
  5. char line[LINESIZE];
  6.  
  7. int main() {
  8.    while(1) {
  9.        printf("enter an integer: ");
  10.        if(!fgets(line, LINESIZE, stdin)) {
  11.            clearerr(stdin);
  12.            break;
  13.        }
  14.  
  15.        if (sscanf(line, "%d", &n) == 1)
  16.            sum += n;
  17.    }
  18.    printf("%d \n",sum);
  19. }
  20.  

O pues, si quieres algo simple, para un caracter, usa getchar(), aunque también no es muy recomendable acostumbrarse, pero bueno.
Código
  1. while (rec != EOF)
  2. {
  3.     rec=getchar();
  4.     if((rec != '\n') && (rec != EOF)){    
  5.          printf ("this is variable %c\n",rec);
  6.     }
  7. }
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(void *) en funciones
Programación C/C++
Shon 4 5,332 Último mensaje 25 Enero 2011, 16:06 pm
por Littlehorse
dev-c++ ----> ¿void?
Programación C/C++
lalocr 7 18,937 Último mensaje 21 Abril 2011, 11:05 am
por <<<-Basura->>>
funciones INT vs VOID « 1 2 »
Programación C/C++
ALONSOQ 14 7,266 Último mensaje 4 Septiembre 2012, 16:49 pm
por ALONSOQ
Convertir de void a int
Programación C/C++
mester 3 5,300 Último mensaje 22 Noviembre 2015, 20:07 pm
por mester
Problemas con los void « 1 2 »
Programación C/C++
Sayuri108 18 6,775 Último mensaje 10 Enero 2018, 01:47 am
por srWhiteSkull
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines