寻找一个独特的角色

时间:2014-04-30 16:49:05

标签: c find character words

我的任务是比较一些单词并找到两个单词中都没有使用的单词。这是我的代码。但是我收到了警告:

[Warning] passing argument 1 of 'ret' makes pointer from integer without a cast [enabled by default].

当我试图运行它时,它会显示consolepauser.exe stopped working

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char ret(char a[1][10],char b[3][10])
{
        int i,j,p,t;
        for (i=0;i<1;i++)
            for (j=0;j<10;j++)
                for (p=0;p<3;p++)
                    for (t=0;t<10;t++)
                    {
                        if (tolower(a[i][j]==tolower(b[p][t])))
                        {
                            p=3;
                            break;
                        }
                        if (p==2)
                            if (t==9) return tolower(a[i][j]) ;
                    }
        return 'N';

}
int main(int argc, char *argv[]) {

    char k[3][10]={"cHaOs","TOP","blAa"};
    char b[1][10]={"SomeThIng"};
    char q[1][10]={"HaPa"};
    if (ret(b[1][10],k[3][10])='N') printf("No character") ;
    else printf("%c",ret(b[1][10],k[3][10])) ;

return 0;

}

2 个答案:

答案 0 :(得分:2)

您应该将参数传递为:

if (ret(b, k) == 'N') printf("No character");
else printf("%c", ret(b, k));

答案 1 :(得分:0)

  

[警告]传递&#39; ret&#39;的参数1从没有强制转换的整数生成指针

b[1][10]char,而不是char [1][10]类型的变量,您应该像这样调用ret()ret(b, k)。其他类似的。

注意:char b[1][10];的有效索引是b[0][0]b[0][1],...,b[0][9],`b [1] [10] 1中的索引是越界,并将导致未定义的行为。

以下是代码的语法修复版本,您可能希望将其与原始代码进行比较,以找出其中的其他问题:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char ret(char a[1][10],char b[3][10])
{
        int i,j,p,t,e,r;
        for (i=0;i<1;i++)
            for (j=0;j<10;j++)
                for (p=0;p<3;p++)
                    for (t=0;t<10;t++)
                    {
                        if (tolower(a[i][j])==tolower(b[p][t]))
                        {
                            p=3;
                            break;
                        }
                        if (p==2)
                            if (t==9) return tolower(a[i][j]) ;
                    }
        return 'N';

}
int main(int argc, char *argv[]) {
    int i,j,p,t,e,r;
    char a,h;
    char k[3][10]={"cHaOs","TOP","blAa"};
    char b[1][10]={"SomeThIng"};
    char q[1][10]={"HaPa"};
    if (ret(b,k)=='N') printf("No character");
    else printf("%c",ret(b,k));

return 0;

}