gpt4 book ai didi

c - 尝试比较二维数组中的字符串

转载 作者:行者123 更新时间:2023-12-04 04:34:48 25 4
gpt4 key购买 nike

所以我创建了一个包含一堆单词的文件,我的程序应该打开文件,将所有单词放在一个数组中,然后比较字符串以查看是否有完全匹配。它打开文件并填充数组,但是当我尝试比较字符串时出现了问题.. 谁能告诉我如何解决为什么这不能正确比较?

我的话文件:

Google Twitter Facebook Twitter gmail Flyer city 
phone Google cookie Facebook Flyer grill fork silver tornado dirty
blue grill lemon

代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
FILE *words;
char words_array[20][17];
int x=0;
int y=0;
int pairs = 0;
words=fopen("words.dat","r");
if(words==NULL)
printf("\n\nwords.dat was not properly opened.\n");
else
{
for(x = 0 ; x < 20 ; x++ )
{
fscanf(words,"%s",&words_array[x][y]);
}
fclose(words);
for(x = 0 ; x < 20 ; x++ )
printf("Word #%d is %s \n", x + 1, words_array[x]);

/*start of comparison*/

for(x=0;x<20;x++)
{
for(y=0;y<20;y++)
{
if (strcmp (words_array[x], words_array[x+1])==0)
pairs++;
}
/*end of comparisons*/
}
printf("%d \n",pairs);


}
return(0);
}

输出:
Word #1 is Google 
Word #2 is Twitter
Word #3 is Facebook
Word #4 is Twitter
Word #5 is gmail
Word #6 is Flyer
Word #7 is city
Word #8 is phone
Word #9 is Google
Word #10 is cookie
Word #11 is Facebook
Word #12 is Flyer
Word #13 is grill
Word #14 is fork
Word #15 is silver
Word #16 is tornado
Word #17 is dirty
Word #18 is blue
Word #19 is grill
Word #20 is lemon
0

最佳答案

您只是将当前行与下一行进行比较。使用 strcmp 将循环更改为:

for(x=0; x<20; x++) {
for(y=x+1; y<20; y++) {
if (strcmp (words_array[x], words_array[y])==0)
pairs++;
}
}

这将在您的示例数据中找到五对:
 Google
Twitter
Facebook
Flyer
grill

附带说明一下,您可能希望在程序开头(#includes 和 main 之间)为行数添加一个定义的常量,这样您就不必替换 20如果你想改变读取的行数(当然,字长也可以这样说):
#define MAXLINES 20
#define MAXLENGTH 17

然后你可以在你现在有 20 和 17 的任何地方使用这些常量。

关于c - 尝试比较二维数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915305/

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