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");
}
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
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
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
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"); }
}
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
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