如何在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
相关产品推荐
相关产品推荐

