Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查字符串是否匹配";完",;,如果有,就退出_C++_Exit_Palindrome - Fatal编程技术网

C++ 检查字符串是否匹配";完",;,如果有,就退出

C++ 检查字符串是否匹配";完",;,如果有,就退出,c++,exit,palindrome,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);

我有以下代码:

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();

    }
    }
int main()
{
字符串[80];
bool重启;
重启=真;
while(重启)
{

cout这里有一个解决方案,如果“END”,它将终止while循环创建一个helper方法来解析
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

这是一个足够的提示吗

#include <iostream>

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

  std::cin >> B;

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

  return(0);
}
#包括
int main()
{
字符A[]=“结束”;
charb[10];
标准:cin>>B;

std::cout为什么不使用std::string?因为std::是不需要的,而且是打字的浪费:P@Prstorero可以说这是家庭作业……但你的缩进是罪恶的:你误解了
std::
,不缩进你的代码对我们来说是不礼貌的。@Beta:我完全同意:好的缩进有助于理解代码!事实上,我如果没有缩进,我很难阅读自己的代码,更不用说其他人的代码了。一旦代码正确缩进,就很容易根据结构发现某些错误。当然,这不适用于初学者…
strlen(“END”)
==3,而不是4。这非常适合我的需要。我运行了程序,它正确地识别了回文,并在只输入end-end时退出。好的是我已经理解了if语句的工作原理,所以我应该全部设置:)我感谢您的帮助。您的解决方案仅采用大写。mor可靠的解决方案是在比较之前将字符串全部转换为大写。@Thomas,将全部转换为大写将违背我的赋值要求。如果所有小写字母都是“end”是类型化的,它应该继续,但如果所有大写字母都是类型化的,则退出。因此,如果所有内容都转换为所有大写字母,则将无法达到目的,但我确实看到了使用它的目的。仅供参考,这可能会导致缓冲区溢出。我建议使用
std::cin.get()
,因为您可以限制字符数。