Buenas!
Tengo este código ;
#include <stdio.h>
char nombre;
char apellidos;
int edad;
int main (void)
{
printf ("Introduzca su nombre");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos");
scanf ("%s", &apellidos);
printf ("Por último introduzca su edad");
scanf ("%n", &edad);
if ((edad>=18) && (edad<=22))
printf ("%s", &nombre);
else
printf ("No cumple los requisitos");
}
El problema está en que, al compilarlo y ejecutarlo por consola, muestra bien el apartado de nombre y apellido pero, una vez introducido lo de apellido, se muestra inmediatamente lo de introduzca su edad, y pegado lo de no cumple los requisitos, sin siquiera dejarme introducir la edad.
¿Qué ocurre?
Pues yo veo dos cosas:
-1 Que es scanf("%n".....)? Por lo que tengo entendido es %d cuando quieres introducir un número decimal.
-2 Estás mezclando strings con char. has creado una variable char y después al introducir en el teclado dices que van a introducir un string.
Te dejo el código bien hecho, comprobado que funciona:
#include <stdio.h>
char nombre[20];
char apellidos[20];
int edad;
int main (void)
{
printf ("Introduzca su nombre: ");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos: ");
scanf ("%s", &apellidos);
printf ("Por ultimo introduzca su edad: ");
scanf ("%d", &edad);
if ((edad>=18) && (edad<=22))
printf ("%s", &nombre);
else
printf ("No cumple los requisitos");
}
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
Pues yo veo dos cosas:
-1 Que es scanf("%n".....)? Por lo que tengo entendido es %d cuando quieres introducir un número decimal.
-2 Estás mezclando strings con char. has creado una variable char y después al introducir en el teclado dices que van a introducir un string.
Te dejo el código bien hecho, comprobado que funciona:
#include <stdio.h>
char nombre[20];
char apellidos[20];
int edad;
int main (void)
{
printf ("Introduzca su nombre: ");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos: ");
scanf ("%s", &apellidos);
printf ("Por ultimo introduzca su edad: ");
scanf ("%d", &edad);
if ((edad>=18) && (edad<=22))
printf ("%s", &nombre);
else
printf ("No cumple los requisitos");
}
Gracias por contestar y tomarte la molestia!
El primero ha sido un fallo muy tonto, y respecto al char, lo que haces de char[20] imagino que sera para especificar cuantos caracteres contendrá, pero, si a su vez quiero hacer de este un vector sería char[20][5] suponiendo que quiera que mi vector tenga cinco posiciones?
Un saludo y gracias
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
Pues yo veo dos cosas:
-1 Que es scanf("%n".....)? Por lo que tengo entendido es %d cuando quieres introducir un número decimal.
-2 Estás mezclando strings con char. has creado una variable char y después al introducir en el teclado dices que van a introducir un string.
Te dejo el código bien hecho, comprobado que funciona:
#include <stdio.h>
char nombre[20];
char apellidos[20];
int edad;
int main (void)
{
printf ("Introduzca su nombre: ");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos: ");
scanf ("%s", &apellidos);
printf ("Por ultimo introduzca su edad: ");
scanf ("%d", &edad);
if ((edad>=18) && (edad<=22))
printf ("%s", &nombre);
else
printf ("No cumple los requisitos");
}
Gracias por contestar y tomarte la molestia!
El primero ha sido un fallo muy tonto, y respecto al char, lo que haces de char[20] imagino que sera para especificar cuantos caracteres contendrá, pero, si a su vez quiero hacer de este un vector sería char[20][5] suponiendo que quiera que mi vector tenga cinco posiciones?
Un saludo y gracias
Lo que he hecho con char nombre[20] es hacer un vector de caracteres, un vector de caracteres es un string. para hacer un array de strings primero crearía un tipo String y después haría el array, te dejo un ajemplo para que entiendas mejor:
#include <stdio.h>
int main(){
int i;
typedef char tipoString[20];
tipoString nombres[5];
for (i = 0; i < 5; i++){
scanf("%s",&nombres[i]);
}
for (i = 0; i < 5; i++){
printf("%s\n,nombres[i]);
}
}
No sé si deberíamos considerarlo importante, pero yo metería las órdenes de los condicionales entre llaves {}.
Por lo demás, a mí el siguiente código me funciona como pides, cambiando el tipo de valor del scanf a decimal "%d":
#include <stdio.h>
char nombre;
char apellidos;
int edad;
int main (void)
{
printf ("Introduzca su nombre");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos");
scanf ("%s", &apellidos);
printf ("Por último introduzca su edad");
scanf ("%d", &edad);
if ((edad>=18) && (edad<=22)) {
printf ("%s", &nombre); }
else {
printf ("No cumple los requisitos"); }
}
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
No sé si deberíamos considerarlo importante, pero yo metería las órdenes de los condicionales entre llaves {}.
Por lo demás, a mí el siguiente código me funciona como pides, cambiando el tipo de valor del scanf a decimal "%d":
#include <stdio.h>
char nombre;
char apellidos;
int edad;
int main (void)
{
printf ("Introduzca su nombre");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos");
scanf ("%s", &apellidos);
printf ("Por último introduzca su edad");
scanf ("%d", &edad);
if ((edad>=18) && (edad<=22)) {
printf ("%s", &nombre); }
else {
printf ("No cumple los requisitos"); }
}
CIerto, no me había fijado en los condicionales :D