C 我的字谜程序能运行吗?如果是,为什么不编译?
我的程序不编译。它一直在说: [错误]从“char”到“char*”的转换无效 它应该是一个程序,用于识别两个字符串是否是彼此的字谜。 我使用了一种排序方法,但我不知道它是否有效。 希望你们能帮我。 我只能使用字符串和数组C 我的字谜程序能运行吗?如果是,为什么不编译?,c,string,anagram,C,String,Anagram,我的程序不编译。它一直在说: [错误]从“char”到“char*”的转换无效 它应该是一个程序,用于识别两个字符串是否是彼此的字谜。 我使用了一种排序方法,但我不知道它是否有效。 希望你们能帮我。 我只能使用字符串和数组 int main () { char sString_1[100], sString2[100], store[50]; int j, i; printf("Enter String 1: "); gets(sString_1);
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");
}
}
int main()
{
char sString_1[100],sString2[100],store[50];
int j,i;
printf(“输入字符串1:”);
获取(sString_1);
printf(“\n输入字符串2:”);
获取(sString2);
if(strlen(sString_1)!=strlen(sString2))
printf(“%s和%s不是字谜”,sString_1,sString2);
其他的
{
对于(i=0;i
strcmp(字符串1[i],字符串2[j])
strcmp的参数应该是
const char*
类型,但您只传递单个字符。通常,当您使用p[i]
时,您将指针(或数组)p
更改为它所指向的内容,例如字符。
这就像写*(p+i)
。要获取该字符的地址,您可以编写p+i
或&p[i]
示例:要修复错误,您必须更改
strcmp(sString_1[i], sString2[j])
进入
你想这样做吗
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==========
char sString_1[100],sString2[100],store;//商店是1卡
//=========省略==========
其他的
{
对于(i=0;i 对于(j= i+1;jstryLeN(strigs1);++j)/ /“在哪一行代码上?请删除所有并保持整个程序用C函数编写。如果您使用C++,请尝试使用内置的字符串类-它们使我的生活更容易。在我的经验中,看<代码> StrcPy(Sturn,String Guang[1]))什么是你使用的两个东西,什么是PARTME类型?什么是C++?ScCyPy <代码>?C++的东西在哪里?还有<代码> StrucP。谢谢。但是现在我遇到了这条线的问题:如果(StrucMP(SSTRIGEG1,SSTRIG2)=0)PrTrF(“ANGRAM”);否则PrtTf(“不”);看看你的两个strcmp:第一个比较1和2,第二个比较2和2。但我不理解你的字谜算法。我要做的是:对两个字符串进行排序。例如,“dog”变为“dgo”,“god”也变为“dgo”,这样你就可以在排序后对它们进行strcmp。
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==========