繁体   English   中英

显示错误为“指针与整数('int'和'const char *')之间的比较”

[英]there is an error shows up to be “comparison between pointer and integer ('int' and 'const char *')”

char * piglatin(const char s[], int len) {
    char * result[len+3] = s[];
    char * current[len+3] = s[];
    if(s[0]=="o"||"u"||"e"||"a"||"i"){
        result[len-1] = "y";
        result[len-2] = "a";
        result[len-3] = "-";
    }
    else{
        for(int i = 0; i<len-1; i++){
            result[i] = current[i+1];
            result[len-1] = "-";
            result[len] = current[0];
            result[len+1] = "a";
            result[len+2] = "y";
        }
    }


    }

我在为计算机科学课做程序作业时遇到了一个问题。 如果s的第一个字母是元音,教授希望我们在字符串s后面加上“ -ay”,否则,请删除s的第一个字母并加上“-?ay”。 我的错误出现在“ if(s [o] ==” o“ |||” u“ ||” e“ ||” a“ ||” i“)”处,并说“指针与整数(' int'和'const char *')“。 我感到困惑,因为s不是指针,并且右侧也不是整数。

cmon brother ...对所有其他对象使用'o'而不是“ o”,在if语句中,您必须将它们全部与s [0]进行比较,例如s [0] =='o'|| s [0] = ='u'|| s [0] =='e'|| s [0] =='a',依此类推。 但是您仍然会出错,所以请不要忘记返回指针:)和(const char s [])s的值是常量,您将如何更改它! 删除const

这里有两个问题。 编译器抱怨,因为s[0]是一个char"o" (和其他)是指向char数组的指针(基本上)。 为了解决这个问题,更换"o"'o'

不过,还有一个更大的问题:您只将s [0]与'o'进行比较。 测试中的其他所有内容都将评估为true:

    if(s[0]=='o'||s[0]=='u'||s[0]=='e'||s[0]=='a'||s[0]=='i'){

在下面的代码中, s[0]是一个字符-一种整数形式,其中"o"是一个字符串const char * -因此,您正在将字母“ a”(或类似字符)与字符串`的地址进行比较“ o”。

if(s[0]=="o"||"u"||"e"||"a"||"i"){

你应该做:

if(s[0]=='o' ... )

但是,|| “ u”并不代表我认为您认为的意思。 由于所有字符(或代码中的字符串)都不为零/ NULL,因此它们变为true ,并且if语句将始终为true。

您需要一个比较语句:

if(s[0] == 'o'|| s[0] == 'u' ... )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM