2013-11-23 48 views
0

因为我做了功能void logoff_check()编译时程序崩溃与第一(正确)输入没有错误。我没有看到任何错误。这个功能有什么问题?它崩溃我的程序没有错误

我知道我解释不好。如果您需要更多关于问题的详细信息,请发表评论,我会尽我所能解释。我是编程新手,我正在学习计算机科学。

这是函数:

void logoff_check(string username, string lab1[], string lab2[], string lab3[], string lab4[], bool& logoff) 
{ 

for (int i = 0; i < 6; i++) 
{ 
    if (lab1[i] == (username + " ") && i < 5){ 
     lab1[i] == ""; 
     cout << "\n\n\t\t\tLog Off Successful.\n\n"; 
     logoff = true; 
     break; 
    } 
    else if (lab2[i] == (username + " ")){ 
     lab2[i] == ""; 
     cout << "\n\n\t\t\tLog Off Successful.\n\n"; 
     logoff = true; 
     break; 
    } 

    else if (lab3[i] == (username + " ") && i < 4){ 
     lab3[i] == ""; 
     logoff = true; 
     cout << "\n\n\t\t\tLog Off Successful.\n\n"; 
     break; 
    } 

    else if (lab4[i] == (username + " ") && i < 3){ 
     lab4[i] == ""; 
     cout << "\n\n\t\t\tLog Off Successful.\n\n"; 
     logoff = true; 
     break; 
    } 
} 

} 

这里是代码的其余部分:

#include <iostream> 
#include <cctype> 
#include <cstring> 
#include <string> 
#include <algorithm> 

using namespace std; 

void input(string& username, bool& userDigit); 
void admin(string[], string[], string[], string[]); 
void user(string username, string[], string[], string[], string[]); 
void screen(string[], string[], string[], string[]); 
void search(string ID, string [], string [], string [], string [], bool& notfound); 
void logoff_check(string username, string [], string [], string [], string [], bool& logoff); 

int main() 
{ 

string username(""); 
const string Admin_key("ADMIN"); 

string lab1[5] = { "", "", "", "", "" }; 
string lab2[6] = { "", "", "", "", "", "" }; 
string lab3[4] = { "", "", "", "" }; 
string lab4[3] = { "", "", "" }; 

char ans; 
bool digitID = true, 
    end = false, 
    inputbool = false, 
    logoff = false; 

do 
{ 

    cout << endl; 

    input(username, digitID); 

    logoff_check(username, lab1, lab2, lab3, lab4, logoff); 

    if (Admin_key == username && !logoff) 

     admin(lab1, lab2, lab3, lab4); 

    else if (digitID && !logoff) 

     user(username, lab1, lab2, lab3, lab4); 

    else if (!logoff) 

     cout << "\nBad input data!\n"; 

    cout << "\n\nTo continue hit Enter or press Q to exit\n"; 

    cin.ignore(); 
    cin.get(ans); 

    if (ans == 'q' || ans == 'Q') //alternate end because the program never ends with this condition 
     end = true;    //in the do-while loop. I dont know why. 

} while (!end); 

    return 0; 

} 

void input(string& username, bool& userDigit) 
{ 
//Function Body 
} 

void admin(string lab1[], string lab2[], string lab3[], string lab4[]) 
{ 
//Function Body 

} 

void user(string username, string lab1[], string lab2[], string lab3[], string lab4[]) 
{ 
//Function Body 
} 

void screen(string lab1[], string lab2[], string lab3[], string lab4[]) 
{ 
//Function Body 
} 

void search(string ID, string lab1[], string lab2[], string lab3[], string lab4[],bool& notfound) 
{ 
//Function Body 
} 
void logoff_check(string username, string [], string [], string [], string [], bool& logoff) 
{ 
//Function is above 
} 

回答

2

你路过你的阵列的结束,因为你有你的警卫落后:

if (lab1[i] == (username + " ") && i < 5){ 

应该是:

if (i < 5 && lab1[i] == (username + " ")){ 

&&运营商执行短路评估,你确实需要它在这里,因为你的每个阵列是不同的长度。

在之后进行测试您已经尝试对该数组编制索引并不是非常有用。

+0

问题解决!谢谢! – emanuel1337