在C ++中输入char变量后,程序的执行结束

Hib*_*bou 1 c++ char

我写了一个程序,要求一个学生的名字和他的分数。一切都能顺利编译,但执行后,程序仅询问名称,然后停止。

#include <iostream>

int main(){
    class student{
        public :
        char *name;
        int marks1; int marks2;

        student(char* n, int n1, int n2){
            name=n, marks1=n1, marks2=n2;
        }

        int calc_med(){return (marks1+marks2)/2;}

        void display(){
            std::cout<<name<<"\n The mediane is >> "<<calc_med()<<"\n";
        }
    };

    char *name1;
    std::cout<<"Enter the student's name > ";
    std::cin>>name1;
    int m1;
    std::cout<<"Enter the first mark > ";
    std::cin>>m1;   
    int m2;
    std::cout<<"Enter the second mark > ";
    std::cin>>m2;


    student student1(name1,m1,m2);
    student1.display();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Chi*_*ter 7

您需要分配name(或name1可能分配)。

有很多方法可以做到这一点,但是最好的方法是a)使用一个std::string


std::string name;
Run Code Online (Sandbox Code Playgroud)

或b)将名称转换为数组:

char name[BUFFER_SIZE]; // BUFFER_SIZE is some constant
Run Code Online (Sandbox Code Playgroud)

注意:b)可能需要一些特殊的逻辑,以确保您不会BUFFER_SIZE过时,但我将由您自己决定。