gpt4 book ai didi

c - 如何实现显示文本文件中五个最长单词的 C 程序?

转载 作者:行者123 更新时间:2023-11-30 16:34:59 27 4
gpt4 key购买 nike

文本文件有 225000 字。按以下顺序:

d
d
da
dog
dover
Denmark
lovethislifetoenjoy
beautifully
travelllerwise
lovethislifetoenjoy
alaskabluewheals
oceanisbluee
lovethislifetoenjoyfuntravel
basketball
lovethislifetoenjoyfuntravel
fashion
londonis

..

所以程序应该打印以下内容:

<小时/>

热爱生活,享受有趣的旅行

旅行者智慧

阿拉斯加蓝鲸

海洋之蓝

热爱生活,享受有趣的旅行

<小时/>

到目前为止我已经编码了

int main()
{
FILE *fp;
errno_t err;
char current_Word[1024];
char longest_word[1024];
int ct=0;
char longWordList = malloc(sizeof(char*) * 10);

if ((err = fopen_s(&fp, "dictionary.txt", "r")) != 0)
{
printf("Cannot open file.\n");
return -1;
}
memset(longest_word, '\0', sizeof(longest_word));
while(fscanf_s(fp, "%s", current_Word, _countof(current_Word))!= EOF)
{
if (ct == 0)
{
strcpy(longest_word, current_Word);
}

if (strlen(current_Word) > strlen(longest_word))
{
strcpy(longest_word, current_Word);
}
ct++;

}
/* print */
printf("\nThe longest word is\n");
fprintf(stdout, "%s\n", longest_word);
fclose(fp);
return 0;
}

程序只打印这个 -> lovethislifetoenjoyfuntravel

如何跟踪存储中所有最长的单词,然后将存储区域中的这些单词与刚刚从输入文件中读取的单词进行比较?

如果多个单词与第五长的单词并列,则结束程序并打印最终存储。

当我发现很少有与第5个单词(即存储)相关的内容时,如何结束程序?

我确实用 Java 和 Python 编写代码,但这是我需要为我的部门计划完成的事情。

我在此项目中使用 Visual Studio 2017 社区版。

我们将非常感谢您的帮助。

谢谢

最佳答案

以下内容应显示五个最长的单词。
此外,它还会打印其他单词,其大小与文件中五个最长单词中最短的单词相同:

#define WORD_MAX_SIZE           (50)
#define LONGEST_WORDS_COUNT (5)

int main()
{
char sCurWord[WORD_MAX_SIZE+1];
char arrLongestWords[LONGEST_WORDS_COUNT][WORD_MAX_SIZE+1];
int iShortestWordIndex = 0;
FILE* fp;

memset( arrLongestWords, 0, sizeof(arrLongestWords));

if( 0 != fopen_s(&fp, "C:\\Temp\\BlaBla.txt", "r"))
{
printf("Cannot open file.\n");
return -1;
}

while( fscanf_s( fp, "%1023s ", sCurWord, WORD_MAX_SIZE) == 1)
{
if( strlen(arrLongestWords[iShortestWordIndex]) < strlen(sCurWord))
strcpy_s( arrLongestWords[iShortestWordIndex], WORD_MAX_SIZE, sCurWord);

// Re-calculate shortest word index:
iShortestWordIndex = 0;
for( int i=1; i<LONGEST_WORDS_COUNT; i++)
{
if( strlen( arrLongestWords[i]) < strlen( arrLongestWords[iShortestWordIndex]))
{
iShortestWordIndex = i;
}
}
}

/* print */
printf("\n%d longest words are:\n", LONGEST_WORDS_COUNT);
for( int i=1; i<LONGEST_WORDS_COUNT; i++)
{
::printf( "\t%s\r\n", arrLongestWords[i]);
}

::printf( "\r\nOther words in the file, which their length are the same as the %dth largest word:\r\n", LONGEST_WORDS_COUNT);
// Move file-pointer back, to the beginning of the file:
rewind(fp);
// Now go over file once more to find all words, which their sizes are the
// same as the shortest word:
while( fscanf_s( fp, "%1023s ", sCurWord, WORD_MAX_SIZE) == 1)
{
if( strlen(arrLongestWords[iShortestWordIndex]) == strlen(sCurWord))
::printf( "\t%s\r\n", sCurWord);
}

fclose(fp);
return 0;
}

关于c - 如何实现显示文本文件中五个最长单词的 C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49106475/

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