[SOLUCIONADO]Fallo en C

Iniciado por D4RKS0N1K, Noviembre 15, 2015, 04:45:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 15, 2015, 04:45:25 PM Ultima modificación: Noviembre 22, 2015, 06:03:38 PM por blackdrake
Buenas!

Tengo este código ;

Código: c
#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:

Código: c
#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");
}
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi 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:

Código: c
#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 los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi 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:

Código: c
#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:

Código: c
#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]);
}
}
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi 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":
Código: c
    #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"); }
    }
Podría vivir perfectamente con una mancha de pis en la alfombra, pero qué va, tío: Más complicaciones.

No tienes permitido ver los links. Registrarse o Entrar a mi 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":
Código: c
    #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
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta