You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在if-else语句中使用strcat()根据用户输入yes/no执行不同操作

问题修复方案

存在的错误点

  • C风格字符串不能直接用==比较内容,answer == "no"实际比较的是指针地址而非字符串本身,判断永远为假,需要调用strcmp函数做内容比较,两个字符串相等时strcmp返回值为0。
  • else分支语法错误:else (answer== "yes");末尾多了分号,会导致后续大括号内的代码和判断逻辑完全脱离;且else后不能直接跟判断条件,需写为else if格式。
  • 受上述语法错误影响,当前代码无论用户输入任何内容,cout<< strcat(str1,str3);都会执行,不符合分支判断预期。

修复后代码(C风格字符串版本)

#include <iostream>
#include<cstring>
using namespace std;

int main()
{
    char str1[50]= "F*ck";
    char str2[50]= "You";
    char str3[50]= "Me";
    char answer[50];

    cout<< "Do you like rock music yes or no?";
    cin>> answer;

    if (strcmp(answer, "no") == 0){
        cout<< strcat(str1,str2);
    } else if (strcmp(answer, "yes") == 0){
        cout<< strcat(str1,str3);
    } 
    return 0;
}

更简洁的C++ std::string实现版本

使用C++标准库字符串类可以避免手动处理字符串比较、拼接的底层操作,逻辑更易维护:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str1 = "F*ck";
    const string str2 = "You";
    const string str3 = "Me";
    string answer;

    cout<< "Do you like rock music yes or no?";
    cin>> answer;

    if (answer == "no"){
        cout << str1 + str2;
    } else if (answer == "yes"){
        cout << str1 + str3;
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Tommy Ferg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:45:00