Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 12, 2008, 02:08:42
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Tecla enter 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Tecla enter  (Leído 490 veces)
elmiobatch
Recien Llegado
*
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« en: Mayo 30, 2007, 03:51:23 »

Buenas foro, a ver si me podeis ayudar. Lo que quiero es en C, leer unos datos por teclado:

Nombre: (Se introduce el nombre). Al dar enter pasa al siguiente
Apellidos: (Se introduce el apellido). Al dar enter termina.

Bien lo que quiero es que al dar enter, si no he introducido nada, tambien pase al paso siguiente. Por que en mi programa tiene unos valores por defecto que se cogeran si el valor introducido es NULL.

Ahora lo que me hace es que si no pongo nada me aparece una linea blanca esperando que inserte algo y hasta que no inserte no pasa al siguiente paso.

Lo que utilizo es:

printf("Inserta el nombre: ");
scanf("%s",nombre);

GRACIAS
En línea
Dark Julius Belmont
Visitante
« Respuesta #1 en: Mayo 30, 2007, 06:29:07 »

usa esto

include <stdio.h>

lea_cadena(char a[]);

void main()
{
 char s[20];
 printf("Inserta el nombre: ");
 lea_cadena(s);
}

// funcion para leer una cadena
// getche() te da el codigo ascii de la tecla presionada y el codigo ascii es 13
// quiere decir que presiono el ENTER por que ese es es codigo del ENTER  Shocked
lea_cadena(char a[])
{
 char c;
 unsigned char i=0;
 while((c==getche()!=13)
  a[i++]=c;
 a='\0';
}


ahi esta ojala te sirve  Grin Grin Grin
En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 185



Ver Perfil
« Respuesta #2 en: Mayo 30, 2007, 08:02:44 »

Buenas.

No es que este mal, pero creo  Dark Julius Belmont que te complicas demasiado para leer una cadena, mas teniendo varias funciones estandar que lo hacen. Una solucion alternativa seria

Código:
#include <stdio.h>
#include <string.h>

int main(void)
{
char s[20];

printf("Inserta el nombre\n");
        fgets(s,20,stdin);
s[strlen(s)-1] = '\0';

return 0;
}

Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

Dark Julius Belmont
Visitante
« Respuesta #3 en: Mayo 30, 2007, 01:42:23 »

Buenas.

No es que este mal, pero creo  Dark Julius Belmont que te complicas demasiado para leer una cadena, mas teniendo varias funciones estandar que lo hacen. Una solucion alternativa seria

Código:
#include <stdio.h>
#include <string.h>

int main(void)
{
char s[20];

printf("Inserta el nombre\n");
        fgets(s,20,stdin);
s[strlen(s)-1] = '\0';

return 0;
}

Saludos, FreakMind

es cierto pero a mi me gusta lo dificil  Grin por cierto cabe mencionar que la funcion "fgets" es principalmente usada para leer cadenas desde un archivo para los que no sabian  Roll Eyes
En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 185



Ver Perfil
« Respuesta #4 en: Mayo 30, 2007, 01:49:55 »

Buenas

No estaba hablando de que si a ti te guste lo dificil o no. Pero creo que hay una diferencia entre que te guste lo dificil y hacer dificil las cosas que son faciles o simples. Roll Eyes


Saludos, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #5 en: Mayo 30, 2007, 06:11:26 »

fgets es una funcion "segura" para leer cadenas, la razon es que puede limitar la entrada, muy a diferencia de scanf o de gets, las cuales son vulnerables a overflows. por cierto te falto un ")" en el  "while".

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
AzRaEL
Moderador Global
Colaborador
*****
Desconectado Desconectado

Mensajes: 415


... a light to burn all the empires


Ver Perfil
« Respuesta #6 en: Mayo 31, 2007, 07:20:53 »

fgets es una funcion "segura" para leer cadenas, la razon es que puede limitar la entrada, muy a diferencia de scanf o de gets, las cuales son vulnerables a overflows. por cierto te falto un ")" en el  "while".

Att: DarkIker

lol
En línea

Carbide Senior Developer
crackenfind.net
eof-project.net

DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 263


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #7 en: Mayo 31, 2007, 10:42:01 »

See you in the msn i have job, a "true" job, and is like Coder Smiley, HELP MEEEEEEEE.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
AzRaEL
Moderador Global
Colaborador
*****
Desconectado Desconectado

Mensajes: 415


... a light to burn all the empires


Ver Perfil
« Respuesta #8 en: Junio 01, 2007, 08:18:16 »

today after 10 pm GTM central time.
En línea

Carbide Senior Developer
crackenfind.net
eof-project.net

Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Tecla enter « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC