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

No me anda la funcion fgets en c

Estas en el tema de No me anda la funcion fgets en c en el foro de C/C++ en Foros del Web. Hola Tengo un problema con mi código. Tengo 4 datos que ingreso con la función fgets, que son el nombre y apellido, dirección. teléfono y ...
  #1 (permalink)  
Antiguo 14/01/2014, 12:55
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 476
Antigüedad: 11 años, 7 meses
Puntos: 1
No me anda la funcion fgets en c

Hola

Tengo un problema con mi código. Tengo 4 datos que ingreso con la función fgets, que son el nombre y apellido, dirección. teléfono y email. El problema es que no aparece o no se visuliza en la pantalla para ingresar estos datos.
Uso el sistema operativo ubuntu.
Este es mi código:

Cita:
include <stdio.h>
#include <ncurses.h>
#include <stdlib.h>
struct contacto{
int con_cod;
char con_nya[30];
char con_dir[30];
char con_tel[20];
char con_ema[30];
}con;

FILE *arch;
void altas(void);

int main(void){
initscr();
move(1,40);
start_color();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
printw("Programa de contacto");
arch=fopen("contactos.dat", "a+b");
if(arch==NULL){
move(10,20);
printf("Error al crear el archivo");
exit(0);}
altas();
fclose(arch);
endwin();
}

void altas(void){
erase();
start_color();
init_pair(1,COLOR_BLUE,COLOR_RED);
attron(COLOR_PAIR(1));
move(12,30);
printw("Codigo:");
move(12,38);
scanw("%d",&con.con_cod);
move(13,30);
printw("Nombre:");
move(13,38);
fgets(con.con_nya,30,stdin);
move(14,30);
printw("Dirección:");
move(14,43);
fgets(con.con_dir,30,stdin);
fflush(stdin);
move(15,30);
printw("Teléfono:");
move(15,43);
fgets(con.con_tel,20,stdin);
move(16,30);
printw("Email:");
move(16,38);
fgets(con.con_ema,30,stdin);
getch();
fwrite(&con,sizeof(con),1,arch);
}
  #2 (permalink)  
Antiguo 14/01/2014, 23:25
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 12 años, 7 meses
Puntos: 137
Respuesta: No me anda la funcion fgets en c

fgets lee el input al momento, no espera a que el usuario escriba, utiliza un while revisando lo que te regresa fgets

Un saludo!
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 15/01/2014, 18:40
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 476
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: No me anda la funcion fgets en c

Hola

Cita:
utiliza un while revisando lo que te regresa fgets
¿Como revisando lo que te regresa? no te entiendo. Me podés aclarar más

Gracias.
  #4 (permalink)  
Antiguo 16/01/2014, 00:35
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 12 años, 7 meses
Puntos: 137
Respuesta: No me anda la funcion fgets en c

olvida eso me confundi :P

¿Qué es el error que te dá?
__________________
>> abimaelmartell.com
  #5 (permalink)  
Antiguo 16/01/2014, 06:50
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 476
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: No me anda la funcion fgets en c

Hola

Como decía antes, no puedo ingresar los datos como nombre y apellido , teléfono, email, y dirección. Todos estos datos para ingresarlos en pantalla uso la función fgets, pero cuando ejecuto el programa no aparece nada. El único dato que aparece para ingresarlo desde la pantalla es el código del contacto pero para este dato uso la función scanw.

¿Que pueden ser? Me ayudan.

Gracias.
  #6 (permalink)  
Antiguo 16/01/2014, 08:42
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 7 años, 9 meses
Puntos: 35
Respuesta: No me anda la funcion fgets en c

Que te parece algo así?

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void get_input(const char *prompt, char *buffer)
  6. {
  7.     int bytes = 0;
  8.     char current_char;
  9.     char *input = NULL;
  10.  
  11.     printf("%s", prompt);
  12.  
  13.     while ((current_char = getchar()) != '\n')
  14.     {
  15.         bytes++;
  16.         input = (char *)realloc(input, bytes);
  17.         input[bytes - 1] = current_char;
  18.     }
  19.  
  20.     input[bytes] = '\0';
  21.  
  22.     strcpy(buffer, input);
  23.  
  24.     free(input);
  25. }
  26.  
  27. int main()
  28. {
  29.     char nombre[20];
  30.  
  31.     get_input("Escribe tu nombre: ", &nombre);
  32.     printf("Tu nombre es: %s\n", nombre);
  33.  
  34.     return 0;
  35. }

Espero que te sirva!

  #7 (permalink)  
Antiguo 16/01/2014, 19:26
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 476
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: No me anda la funcion fgets en c

Hola

Cita:
Espero que te sirva!
No. no me sirve de mucho. Deseo corregir lo mio, para que pueda aprender. Por eso insisto si alguien puede ayudarme a corregir mi código para que pueda ingresar por pantalla los datos nombre y apellido, email, dirección y teléfono con la función fgets o con otra función que me permite ingresar espacios en blanco para el nombre y apellido.
  #8 (permalink)  
Antiguo 16/01/2014, 19:43
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 7 años, 9 meses
Puntos: 35
Respuesta: No me anda la funcion fgets en c

Pues lamentablemente no puedo reproducir tu error, a mi esto me funciona perfectamente.

Código C:
Ver original
  1. char nombre[20];
  2. char apellido[20];
  3. char direccion[20];
  4. char telefono[20];
  5. char email[20];
  6.  
  7. fgets(nombre, 20, stdin);
  8. printf("%s\n", nombre);
  9.  
  10. fgets(apellido, 20, stdin);
  11. printf("%s\n", apellido);
  12.  
  13. fgets(direccion, 20, stdin);
  14. printf("%s\n", direccion);
  15.  
  16. fgets(telefono, 20, stdin);
  17. printf("%s\n", telefono);
  18.  
  19. fgets(email, 20, stdin);
  20. printf("%s\n", email);

Tal vez estás cometiendo algún error en las llamadas a las demás funciones. Por cierto no puedo correr tu código porque no uso Ubuntu. No creo que el error esté en fgets.

  #9 (permalink)  
Antiguo 17/01/2014, 00:12
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 12 años, 7 meses
Puntos: 137
Respuesta: No me anda la funcion fgets en c

yo si lo pude correr en ubuntu...

no me aparece ningun error, de hecho me parece mas problema con ncurses que con fgets
__________________
>> abimaelmartell.com
  #10 (permalink)  
Antiguo 17/01/2014, 05:15
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 9 años, 2 meses
Puntos: 13
Respuesta: No me anda la funcion fgets en c

Usa la función getnstr(const char * str, sizeof len) en vez de fgets y problema resuelto.

Esto quizás te sirva, http://books.google.co.ve/books?id=Htff8VRO-UEC

Saludos.

Etiquetas: anda, fgets, funcion, int
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 18:43.