C++ 为什么我的代码在完成之前总是返回?

C++ 为什么我的代码在完成之前总是返回?,c++,visual-studio-2010,C++,Visual Studio 2010,为什么我的代码不能正常运行?当它到达if-else语句时,它从用户那里获取一个输入,然后在我输入任何其他内容之前退出。我不确定这是否是由于功能没有正确返回,但我真的非常感谢一些帮助。谢谢 #include <iostream> #include <fstream> using namespace std; void studentenrollment (char answer); int main() { char answer;

为什么我的代码不能正常运行?当它到达if-else语句时,它从用户那里获取一个输入,然后在我输入任何其他内容之前退出。我不确定这是否是由于功能没有正确返回,但我真的非常感谢一些帮助。谢谢

#include <iostream>
#include <fstream>

using namespace std;

void studentenrollment (char answer);

int main()
{
    char answer;                                                                    //declaring variables for main
    cout << "Welcome to Luton Sixth Form" << endl;                                   //greeting the user
    cout << "Please State if you are enrolled or not at the sixth form: Y/N" << endl;//giving user options
    cin >> answer;//taking options from user
    studentenrollment(answer);                                                       //calling student enrollment function 

    return 0;
}

void studentenrollment (char answer)
{
    unsigned char name;
    int dob;
    if (answer=='Y'||answer=='y')
    {

        cout << "Welcome to higher education" << endl;
        cout << "Please state your name" << endl;
        cin >> name;
        ofstream myfile;
        myfile.open("StudentAccess.txt");
        myfile << name << endl;
        myfile.close();
        cout << "Your name is now saved, you have access to the gateway" << endl;
    }

    else if(answer=='N'||answer=='n')
    {
        cout << "Please state your name" << endl;
        cin >> name;
        cout << "Please enter your date of birth" << endl;
        cin >> dob;
        ofstream myfile;
        myfile.open("StudentEnrollment.txt");
        myfile << name << dob << endl;
        myfile.close();
        cout << "You will now go through enrollment" << endl;
    }

//    return 0;
}
#包括
#包括
使用名称空间std;
无效学生登记(字符回答);
int main()
{
char answer;//为main声明变量

cout
unsigned char name;
看起来不正确。请选择
char name[MAX_LENGTH];
std::string name;

发生了什么

cin >> name;  // Read just first character
cin >> dob;   // Try to read number, where rest of the name is left in the stream buffer
除非名称的宽度为1个字母,否则这看起来肯定是错误的。

问题可能是:

cin >> name;

您正在输入名称,但将其存储在
name
中,这只是
无符号字符
。请使用更大的数组来存储名称。

如果变量name可以包含多个字符,您不能声明它无符号字符,您可以声明它std::string。记住

#include<string>
#包括

我目前没有设置调试器,因为我正处于C++@Joshmarl的早期阶段,您首先输入什么?如果您既不输入“y”也不输入“n”,程序将退出。您正试图将名称存储在
char
变量中。您可能需要一个字符数组来代替。@Joshmarl在编写co之前应该先有一个调试器D.我不能玩得足够多,你需要一个调试器,并且知道如何调试.@ JojHyMARSURE,如果你是C++,你不需要一个完全成熟的调试器来调试代码.在你的例子中,简单地检查CIN >名称中存储的值就足以捕捉你的bug .这是最容易通过打印变量“名称”来完成的.使用cout Thankyou到控制台-这解决了我一直遇到的问题,使用字符串比使用char[MAX_LENGTH]更好吗?@JoshMarshall是的,这当然是为了。