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.
printf("Cedula (X - XXXXXXXX): ");
fgets(d,30,stdin);
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
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
Si la primera parte de la cédula es un solo carácter lo puedes almacenar utilizando una variable del mismo tipo:
struct ALGO {
char N;
int dato;
};
/* ... */
printf("Cedula (X - XXXXXXXX): ");
fgets(d, 30, stdin);
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:
printf("Cedula (X - XXXXXXXX): ");
fgets(d, 30, stdin);
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
Cita de: rir3760 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:
struct ALGO {
char N;
int dato;
};
/* ... */
printf("Cedula (X - XXXXXXXX): ");
fgets(d, 30, stdin);
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:
printf("Cedula (X - XXXXXXXX): ");
fgets(d, 30, stdin);
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.