Cómo hacer para ingresar sólo "N" cantidad de dígitos

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Purple rhino
Mensajes: 3
Registrado: 04/09/2016 11:39 pm

Cómo hacer para ingresar sólo "N" cantidad de dígitos

#1 Mensaje por Purple rhino » 17/09/2016 12:58 am

Hola a todos, estoy trabajando en un programa que registra pagos y etc., ya tengo todo resuelto excepto una cosa, hay una parte donde se le pide al usuario que ingrese una clave de acceso, la cuál puede ser cualquiera siempre y cuando sean 5 dígitos, mi duda es ¿cómo hacer para que el programa verifique que en realidad son 5 dígitos, no más y no menos?. Espero me puedan ayudar.

Avatar de Usuario
daltomi
Mensajes: 354
Registrado: 28/04/2007 7:29 pm
Ubicación: Argentina

Re: Cómo hacer para ingresar sólo "N" cantidad de dígitos

#2 Mensaje por daltomi » 17/09/2016 6:21 pm

Buenas.
Te muestro un ejemplo, en el cual se permite ingresar como contraseña caracteres en español.
Para esto habilita el ingreso de texto internacional, es decir, otro además del inglés.
Es necesario utiliza el tipo wchar_t y funciones afines: wscanf, wprintf, getwchar.

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

int main () {
	
	setlocale (LC_ALL, "");

	 // 5 caracteres + 1 caracter nulo('\0').
	wchar_t clave [5 + 1];

	
	 // '%5' == 5 caracteres máximo.
	 // 'ls' == implica wchar_t
	 // '[^\n]' == excluir el salto de línea.
	wscanf (L"%5l[^\n]s", clave);

	// '%zu' == implica size_t
	wprintf (L"Clave:'%ls',longitud: %zu\n", clave, wcslen (clave));

	//Descartar cualquier otro caracter del buffer 'stdin'. 
	while ( getwchar() != '\n');
}
Con wcslen(..) obtienes el número de caracteres ingresados.

Saludos.

Purple rhino
Mensajes: 3
Registrado: 04/09/2016 11:39 pm

Re: Cómo hacer para ingresar sólo "N" cantidad de dígitos

#3 Mensaje por Purple rhino » 17/09/2016 11:43 pm

Muchas gracias daltomi, la verdad soy principiante en estas cuestiones pero con el ejemplo ya entendí un poco mejor como hacerlo.
Saludos.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 9 invitados