我的Anagram程序可以运行吗?如果是,为什么不编译?

时间:2016-04-19 14:09:49

标签: c string anagram

我的程序无法编译。它继续说: [错误]无效转换为'char'到'char *' 它应该是一个程序,用于识别两个字符串是否是彼此的字谜。 我使用了排序方法,但我不知道它是否会起作用。 希望你们能帮助我。 P.S我只能使用字符串和数组。

int main ()
{
    char sString_1[100], sString2[100], store[50];
    int  j, i;

    printf("Enter String 1: ");
    gets(sString_1);
    printf("\nEnter String 2: ");
    gets(sString2);

    if (strlen(sString_1) != strlen(sString2))
        printf("%s and %s are not anagrams", sString_1, sString2);
    else
    {
        for(i = 0; i < strlen(sString_1); ++i)
        {
            for (j=i+1 ; j <= strlen(sString_1); ++j)
            {
                if (strcmp(sString_1[i], sString2[j]) > 0)
                {
                    strcpy(store,sString_1[i]);
                    strcpy(sString_1[i],sString_1[j]);
                    strcpy(sString_1[j],store);
                }

            }
        }

        for(i = 0; i < strlen(sString2); i++)
        {
            for (j= i + 1; j <= strlen(sString2); j++)
            {
                if (strcmp(sString2[i], sString2[j]) >0)
                {
                    strcpy(store,sString2[i]);
                    strcpy(sString2[i],sString2[j]);
                    strcpy(sString2[j],store);
                }
            }
        }

        if (strcmp(sString_1, sString2) == 0)
            printf("ANAGRAM");
        else
            printf("NOT");
    }
}

3 个答案:

答案 0 :(得分:0)

strcmp(sString_1[i], sString2[j])

strcmp的参数应该是const char *类型,但你传递单个字符。

答案 1 :(得分:0)

通常,当您使用p[i]时,您将指针(或数组)p更改为指向的内容,例如一个人物。 这就像写*(p+i)。要获取该字符的地址,您可以写p+i&p[i]

示例:修复您需要更改的错误

strcmp(sString_1[i], sString2[j])

strcmp(&sString_1[i], &sString2[j])

答案 2 :(得分:0)

你想这样做吗?

    char sString_1[100], sString2[100], store;            // store is 1char
//=======omit==========
    else
    {
        for(i = 0; i < strlen(sString_1); ++i)
        {
            for (j=i+1 ; j < strlen(sString_1); ++j)         // "<="→"<"
            {
                if (sString_1[i] > sString2[j])              // char
                {
                    store = sString_1[i];                    // char
                    sString_1[i] = sString_1[j];
                    sString_1[j] = store;
                }
            }
        }
        for(i = 0; i < strlen(sString2); i++)
        {
            for (j= i + 1; j < strlen(sString2); j++)         // "<="→"<"
            {
                if (sString2[i] > sString2[j])                // char
                {
                    store = sString2[i];                      // char
                    sString2[i] = sString2[j];
                    sString2[j] = store;
                }
            }
        }
//=======omit==========

1循环 4250 2450 0452
2循环 0254
3循环 0245