为什么在这种情况下使用strcmp会导致程序崩溃?

时间:2014-04-26 19:45:34

标签: c++ strcmp

我在使用strcmp时遇到了困难。我在一个单独的else语句(未列出)中进行调用,它运行正常。这可能是内存问题吗?

while(inHere == 1)
{
    int numberOfOccupiedTables = 0;

    cout << "\nSelect a table below\n---------------\n\n";

    for(int i = 0; i < tables->size(); i++)
    {
        if(tables->at(i)->open == 0)
        {
            cout << "Table " << tables->at(i)->value << "\n";
            numberOfOccupiedTables++;
        }
    }

    if(numberOfOccupiedTables == 0) 
        cout << "No customers found.\n";
    else
    {
        cout << "(q to back out) Enter number of table: ";
        char* choice = (char*)malloc(sizeof(char)*256);
        fgets(choice,256,stdin);
        if(strcmp(choice, "q\n") == 0)
            inHere = 0;
    }

1 个答案:

答案 0 :(得分:1)

如果fgets()因为到达文件末尾而失败,则不会向字符串添加空终止符。在执行NULL之前,请检查以确保它没有返回strcmp()