我的程序无法编译。它继续说: [错误]无效转换为'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");
}
}
答案 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