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)
| | |-+  Problemas con buffer, normal?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con buffer, normal?  (Leído 2,080 veces)
n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
Problemas con buffer, normal?
« en: 6 Abril 2017, 00:12 am »

Buenas noches gente, miren estoy programando con el IDE Code:blocks en Ubuntu, y ultimamente me encontre con problemas no normales, donde supongo que el codigo esta bien e igual el programa se comporta extrañamente.

Generalmente se da cuando cargo un string y luego quiero imprimirlo, no lo imprime, o imprime uno solo y no los otros tres. Realice un codigo simple para que vean de que se trata:

Código:
typedef struct {
    char detalle[300];
    char sentencia[20];
    }funciones;

int main()
{
    funciones f;
    FILE* fichero;
    fichero = fopen("stdio_h.txt", "w");
    printf("escribi\n");
    scanf("%[^\n]", &f.detalle);
    scanf("% [^\n]", &f.sentencia);
    fwrite(&f, sizeof(funciones), 1, fichero);
    fclose(fichero);

    system("clear");
    fichero = fopen("stdio_h.txt", "r");
    fread(&f, sizeof(funciones), 1, fichero);
    printf("%s", f.detalle);
    printf("%s", f.sentencia);
    fclose(fichero);
    return 0;
}

Por ejemplo este codigo solo imprime lo que guarde en f.detalle, y lo de f.sentencia no lo imprime y finaliza el programa en consola.

Yo supongo que es un problema con el buffer, pero al estar en Ubuntu no puedo hacer uso de fflush(stdin);

Puede que limpie el buffer manualmente con este codigo:

Código:
void limpiar_buffer(){

    int c;
    do {
        c = getchar;
        }while (c != '\n' && c != EOF);

    return;}*/

/*void cargar_funcion();
char selec_libreria();
void ver_funciones();

Pero igual el programa falla, es mas parece que nunca sale de esa funcion/bucle, aunque el codigo lo saque de google.

Espero que puedan ayudarme, ya que necesito hacer un programa en C con archivos y demas.

Tambien acepto sugerencias de otros IDES.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problemas con buffer, normal?
« Respuesta #1 en: 6 Abril 2017, 18:39 pm »

A parte de un error en los scanf (para capturar cadenas no hay que usar el operador &) vacía el buffer con la sentencia
Código
  1. while(getchar()!='\n');
  2.  


En línea

n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
Re: Problemas con buffer, normal?
« Respuesta #2 en: 7 Abril 2017, 00:21 am »

Corregi esos errores, e igual me sigue imprimiendo la primer cadena sola, te comento como quedo el codigo:

Código:
void limpiar_buffer(){
    while(getchar()!='\n');

    return;}

/*void cargar_funcion();
char selec_libreria();
void ver_funciones();*/

int main()
{
    funciones f;
    FILE* fichero;
    fichero = fopen("stdio_h.txt", "w");
    printf("escribi\n");
    scanf("%[^\n]", f.detalle);
    limpiar_buffer();
    scanf("% [^\n]", f.sentencia);
    fwrite(&f, sizeof(funciones), 1, fichero);
    fclose(fichero);

    system("clear");
    fichero = fopen("stdio_h.txt", "r");
    fread(&f, sizeof(funciones), 1, fichero);
    printf("%s", f.detalle);
    limpiar_buffer();
    printf("%s", f.sentencia);
    fclose(fichero);
    //printf("\n %s", &fun.sentencia);
    return 0;
}
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problemas con buffer, normal?
« Respuesta #3 en: 9 Abril 2017, 02:32 am »

El segundo limpiar_buffer() sobra. No hay necesidad de limpiarlo allí.
De todas formas lo he probado y funciona. Muestra el contenido de las dos cadenas pero lo hace en la misma línea porqué no has usado un salto de linea cuando termina de escribir la primera.
En línea

n-utz

Desconectado Desconectado

Mensajes: 165

Babylon es el vampiro!


Ver Perfil
Re: Problemas con buffer, normal?
« Respuesta #4 en: 9 Abril 2017, 22:32 pm »

Simplemente era para probar, y no puedo hacer que funcione en mi IDE, imprime solo la primer cadena...

Alguien sabe de que se puede tratar??
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Buffer
Software
Shadow 1 3,743 Último mensaje 4 Septiembre 2002, 20:26 pm
por Bres
problemas de estabilidad del buffer
Software
tk_03 0 1,785 Último mensaje 29 Noviembre 2005, 16:01 pm
por tk_03
Consultas SQL para saber key Buffer en MyISAM y Buffer Pol en InnoDB
Bases de Datos
el-brujo 0 3,647 Último mensaje 23 Mayo 2012, 16:34 pm
por el-brujo
que problemas puede causar memcpy al introducir un buffer de datos en un struct
Programación C/C++
marvic 2 2,982 Último mensaje 8 Octubre 2012, 14:32 pm
por do-while
Problema, return address buffer overflow (Cómo calcular la dirección del buffer?
Bugs y Exploits
Debci 6 7,679 Último mensaje 7 Abril 2014, 20:00 pm
por soez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines