请问 C++ 我无法弄清楚这里出了什么问题
c++ please i cant figure out what is wrong here
bool stringCompare(char*A, char*B)
{
while(*A!=" && *B!=")
{
if (*A != *B)
{
return 0;
}
A++;
B++;
我不知道我做错了什么,但我在 while 循环中不断收到错误。我尝试改用 strncmp,但出现同样的错误。如果我能得到帮助,我将不胜感激。
表达式:
*A!=" && *B!="
正在尝试将 A
指向的字符与字符串文字" && *B!="
进行比较。这不会做你所期望的。
如果你的意图只是简单地查看,直到你到达两个字符串的末尾(这是字符串 compare(1(所需要的(,那么while
循环应该是:
while(*A != ' ' || *B != ' ')
(1(这是假设这个想法是将字符串视为相等,这可能是你想要的。如果它们的长度相同并且所有字符都相同,则它们将被视为相等。使用 &&
将仅检查字符,直到最短字符串的长度,因此"pax"
和"paxdiablo"
将被视为相等。
问题
双引号"
不能替代两个单引号。这导致编译器认为您要将字符*A
与字符串进行比较,从而" && *B!="
出现奇怪的错误消息。
两个单引号''
也不代表有效字符。 没有空字符文字:要么有一个字符(可能是空的(,要么没有字符。
编译它的解决方案
因此,请将循环条件更改为
while(*A!=' ' && *B!=' ')
甚至
while(*A!=0 && *B!=0)
相当于
while(*A && *B)
完整的代码是:
bool stringCompare(char*A, char*B)
{
while(*A && *B)
{
if (*A != *B)
{
return false;
}
A++;
B++;
}
return true;
}
但这是正确的吗?
取决于您的期望。 如果你有一个字符串比另一个字符串长,程序将停止假设比较已经结束。 但我只假设函数的结尾,所以也许你在最后做了以下正确的 return 语句:
return *A==*B; // returns true only if both are equal meaning both 0
在线演示
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了