gpt4 book ai didi

c - 匹配具有相同字母的单词

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:47 27 4
gpt4 key购买 nike

我正在尝试匹配两个单词,然后将它们打印出来,例如“act”和“cat”中包含“a”、“c”和“t”,因此它们匹配。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

main()
{
FILE *fptr;
char words[100], input[100], store[1000][100]
char ch
int i,j,k,z,b,*ptr;

ptr = &b;

fptr = fopen("d:\\words.txt","r");
if (fptr == NULL)
{
printf("Could not open file");
exit(1);
}

printf("Enter the scrambled word: ");
fflush(stdin);
fgets (input,sizeof(input),stdin);

i = 0;
while (fgets(words,sizeof(words),fptr) != NULL)
{
if (strlen(input) == strlen(words))
{
strcpy(store[i],words);
++i;
}
}
//this is where the problem is:
/*am trying to match the letters in two words, if they don't match then store 1 in b,
if b=0 then print out the word which matched with string 'input'*/
for(z = 0; z < 1000; ++z)
{
b = 0;
for(j = 0; j < strlen(input); ++j)
{
for(k = 0; k < strlen(store[z]); ++k)
{
if(input[j] != store[z][k])
*ptr = 1;
}
}
if(*ptr == 0)
{
printf("Word #%2d is: %s\n", z, store[z]);
}
}



fflush(stdin);
getchar();
}

拜托,我真的需要帮助。很抱歉,如果我没有把我的问题说清楚。

最佳答案

对两个字符串中的字母进行排序然后比较它们是完成所需操作的更简单方法之一。 (假设您熟悉排序)

它可能不是最有效的,但我再说一次,通常最好在您拥有有效的解决方案和性能指标之前,不要过分担心效率。

如果您想要一些更有效的方法来检测两个单词是否是变位词,请查看 Mats Petersson 提供的链接,Optimizing very often used anagram function

关于c - 匹配具有相同字母的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18380517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com