bool stringCompare(char*A, char*B)
{
while(*A!=" && *B!=")
{
if (*A != *B)
{
return 0;
}
A++;
B++;
我不知道我做错了什么,但是我在while循环中不断出错。我尝试使用strncmp代替,但出现相同的错误。如果能得到帮助,我将不胜感激。
答案 0 :(得分:1)
双引号"
不能代替两个单引号。这使编译器认为您想将char *A
与字符串" && *B!="
进行比较,从而得出奇怪的错误消息。
两个引号''
也不表示有效字符。没有空的char文字:要么有char(可以为null),要么没有char。
因此将循环条件更改为
while(*A!='\0' && *B!='\0')
甚至
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
答案 1 :(得分:1)
表达式:
WORD [a-zA-Z0-9\/\.-]+
SPECIAL [()><|&;*]
%%
_argcount = 0;
_args[0] = NULL;
{WORD}|{SPECIAL} {
if(_argcount < _numargs-1) {
_args[_argcount++] = (char *)strdup(yytext);
_args[_argcount] = NULL;
}
}
试图将*A!=" && *B!="
指向的字符与字符串文字 A
进行比较。那并不能满足您的期望。
如果您的目的是简单地查看直到到达两个字符串的末尾(这是字符串compare (1)所需要的),则" && *B!="
循环应是:
while
(1)这是假设想法是将字符串视为相等,这可能是您想要的。如果 它们的长度相同 并且所有字符都相同,则将它们视为相等。使用while(*A != '\0' || *B != '\0')
仅检查不超过最短字符串长度的字符,因此&&
和"pax"
将被视为相等。