检查字符串是否与“END”匹配,如果匹配,则退出

时间:2013-09-17 22:30:19

标签: c++ exit palindrome

我在下面有以下代码:

int main ()
    {
    char string[80];
    bool Restart;

Restart = true;

while (Restart)
    {
    cout << "Enter a string\n" << endl;
    cin.getline(string, 80);
    cout << "\nYou entered: ";
    printf(string, 80);
    cout << endl;

    int len=strlen(string);

    bool flag = true;

    for (int c=0; c!=len/2; c++)
        {
        if (flag)
            {
            if(string[c] != string[len-c-1])
                {
                flag = false;
                }
            }
            else
                {
                break;
                }
            }

if (flag)
    {
    cout <<"\nThis is a Palindrome\n" << endl;
    Restart = true;
    continue;
    }
else 
    {
    cout << "\nThis is not a palindrome\n" << endl;
    Restart = true;
    continue;
    }
cin.get();

    }
    }

我需要找出一种方法来检查用户在所有大写字母中输入的内容是否为“END”,如果是,则退出程序。我确定我可以处理现有的部分,但是我无法获得能够检查输入的字符串是否在所有大写字母中都是“END”的内容。

2 个答案:

答案 0 :(得分:0)

如果输入“END”,这是一个终止while循环的解决方案。创建一个帮助方法来对END进行解析。请注意,这是非常具体的问题,而不是非常可重用。与Beta的解决方案不同,它的维护也比较难,但在开始编写更大的程序之前,您无需担心维护。

bool Terminate(char* string, int len)
{
    bool retval = false;
    char* c = string;

    if( 3 == len )  // "END\0"
    {
        if('E' == string[0])  
        {
            if('N' == string [1]) 
            {
                if('D' == string[2])
                {
                    retval = true;
                }
            }
        }
    }

    return retval;
}

然后在int len=strlen(string);之后使用它:

if(Terminate(string, len))
{
    break;  // Exit while loop
}

确保在主要功能

之前声明Terminate

答案 1 :(得分:0)

这是否足以提示?

#include <iostream>

int main()
{
  char A[] = "END";
  char B[10];

  std::cin >> B;

  std::cout << strcmp(A,B) << std::endl;

  return(0);
}