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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [?][C] Separando una cadena alfanumerica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?][C] Separando una cadena alfanumerica  (Leído 2,193 veces)
lerg96

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[?][C] Separando una cadena alfanumerica
« en: 8 Abril 2015, 05:13 am »

Tengo un programa que necesito que me lea clientes, pero quiero que apartir de la cedula de identidad me muestre el si es extranjero o del pais.

Código
  1. printf("Cedula (X - XXXXXXXX): ");
  2. fgets(d,30,stdin);
  3. sscanf(d,"%s - %d",&nuevo->N,&nuevo->dato);

el programa toma la primera X, como cadena para saber si es V (Venezolano) o E (Extranjero) utilizaron una comparacion mas adelante. Y el resto que es XXXXXX, lo deberia guardar en una variable entera

había pensado en esto, pero el problema llega cuando no se colocan los espacios entre X, - y XXXXXX.

es decir, cuando el usuario coloca X-XXXXXXX, todo queda guardado en nuevo->N, y nuevo->dato queda dando numeros al alzar.

claro que ya intente colocando

Código
  1. sscanf(d,"%s-%d",&nuevo->N,&nuevo->dato);

en vez del anterior que mostré más arriba.

si conocen alguna manera de hacerlo, o un consejo o funcion que podria usar, se los agradeceria bastante


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [?][C] Separando una cadena alfanumerica
« Respuesta #1 en: 8 Abril 2015, 07:32 am »

Si la primera parte de la cédula es un solo carácter lo puedes almacenar utilizando una variable del mismo tipo:
Código
  1. struct ALGO {
  2.   char N;
  3.   int dato;
  4. };
  5.  
  6. /* ... */
  7.  
  8. printf("Cedula (X - XXXXXXXX): ");
  9. fgets(d, 30, stdin);
  10. sscanf(d, " %c - %d", &nuevo->N, &nuevo->dato);

Si por alguna razón no es posible y se debe leer como una cadena de un solo carácter puedes indicar el numero máximo de caracteres a leer con:
Código
  1. printf("Cedula (X - XXXXXXXX): ");
  2. fgets(d, 30, stdin);
  3. sscanf(d, "%1s - %d", &nuevo->N, &nuevo->dato);

Si no funciona por favor indícalo y publica si es posible el código fuente completo.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
lerg96

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [?][C] Separando una cadena alfanumerica
« Respuesta #2 en: 8 Abril 2015, 23:55 pm »

Si la primera parte de la cédula es un solo carácter lo puedes almacenar utilizando una variable del mismo tipo:
Código
  1. struct ALGO {
  2.   char N;
  3.   int dato;
  4. };
  5.  
  6. /* ... */
  7.  
  8. printf("Cedula (X - XXXXXXXX): ");
  9. fgets(d, 30, stdin);
  10. sscanf(d, " %c - %d", &nuevo->N, &nuevo->dato);

Si por alguna razón no es posible y se debe leer como una cadena de un solo carácter puedes indicar el numero máximo de caracteres a leer con:
Código
  1. printf("Cedula (X - XXXXXXXX): ");
  2. fgets(d, 30, stdin);
  3. sscanf(d, "%1s - %d", &nuevo->N, &nuevo->dato);

Si no funciona por favor indícalo y publica si es posible el código fuente completo.

Un saludo

Listo. Muchas gracias, me sirvió usando el "%1s" aunque extrañamente cuando usaba %c y lo mostraba aparecia V=Venezolano, no tengo ni la mas minima idea de donde salio el resto que no fuera V. Aun asi muchas gracias, un abrazo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Separando en diferentes servidores? .htaccess
Desarrollo Web
Og. 2 2,371 Último mensaje 16 Julio 2011, 06:38 am
por bomba1990
Una contraseña alfanumerica es segura?
Dudas Generales
derden32 6 5,127 Último mensaje 14 Diciembre 2014, 20:18 pm
por engel lex
Es posible Reversear una Secuencia Alfanumerica? « 1 2 »
Criptografía
Sapote 10 7,046 Último mensaje 10 Abril 2017, 20:48 pm
por Serapis
c /copiar solo caracteres numericos de una cadena alfanumerica a otra
Programación C/C++
Renata94 3 2,560 Último mensaje 4 Mayo 2019, 16:06 pm
por CalgaryCorpus
Contador separando digitos - ayuda! (C++)
Programación C/C++
Federicoide 1 2,638 Último mensaje 20 Febrero 2020, 20:05 pm
por Federicoide
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines