TransWikia.com

Consola en C se cierra después de escribir un valor y guardarlo en una variable

Stack Overflow en español Asked by Agustin Medrano on November 20, 2021

me han dejado crear un programa que pregunte el nombre de un alumno, pregunte el nombre de 4 materias y por ultimo sus calificaciones de esas materias. El problema es que al introducir el valor de la segunda materia la consola se cierra y no se muestra ningún erro. Todo lo anterior funciona bastante bien, sin embargo al preguntarme por el valor de la primera materia e introducir un valor, el programa se cierra y no muestra ningún error, agradecería su ayuda.
¡Gracias!

#include <stdio.h>

int main () {
    char Nombre[100];
    char materia1[100];
    char materia2[100];
    char materia3[100];
    char materia4[100];
    int a, b, c, d, e, f;

// Imprimir la solicitud para obtener el nombre del alumno
    printf("Escribe tu nombre completo:n");
    scanf("%[^n]%*c", Nombre);


// Solicitar las nombres de las materias //


// Nombbre de la materia 1
    printf("Escribe el nombre de tu primera materia:n");
    scanf("%[^n]%*c", materia1);
    
// Nombbre de la materia 2
    printf("Escribe el nombre de tu segunda materia:n");
    scanf("%[^n]%*c", materia2);
    
// Nombbre de la materia 3
    printf("Escribe el nombre de tu tercera materia:n");
    scanf("%[^n]%*c", materia3);
    
// Nombbre de la materia 4
    printf("Escribe el nombre de tu cuarta materia:n");
    scanf("%[^n]%*c", materia4);
    
    
// Solicitar las calificaciones de las materias //


// Calificacion de la materia 1
    printf("Escribe tu calificacion de %s (1 - 10):n", materia1);
    scanf("%i", a);

// Calificacion de la materia 2
    printf("Escribe tu calificacion de %s (1 - 10):n", materia2);
    scanf("%i", b);

// Calificacion de la materia 3
    printf("Escribe tu calificacion de %s (1 - 10):n", materia3);
    scanf("%i", c);

// Calificacion de la materia 4
    printf("Escribe tu calificacion de %s (1 - 10):n", materia4);
    scanf("%i", d);


    e = a + b + c + d; // Suma de las 4 materias
    f = e / 4; // Suma total de las materias dividida entra las 4 materias para obtener promedio


// Imprimir el nombre y promedio del alumno
    printf("%c tus promedio es de: %i", Nombre, f);

    return 0;
}

One Answer

scanf("%i", a);

scanf necesita recibir punteros, ya que de otra forma le sería imposible copiar la entrada del usuario en las variables que le facilitas.

Dado que a no es un puntero no puedes pasarle ese valor directamente, necesitas obtener la dirección de memoria de dicha variable, y para eso tenemos el operador &:

scanf("%i", &a);
//          ^

Answered by eferion on November 20, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP