gpt4 book ai didi

c - 将输入文本读入单词数组并去掉标点符号

转载 作者:行者123 更新时间:2023-11-30 17:16:18 25 4
gpt4 key购买 nike

我在互联网上找到了这个巨大的代码。它是一个程序,可以在文件中找到 n 个最常见的单词并将其打印出来。以下程序读取给定的文本文件,但我想自己编写输入文本,因此我可能会将这些单词存储在数组中。我该如何做到这一点,以便程序读取随机长度的文本,并且以下程序仍然可以工作?而且,如果输入文本中有标点符号,我就必须删除它们,这样文本就不会只包含从“a”到“z”的字母。那么我还需要 MAX_CHARS 常量吗?

#include <stdio.h>
#include <string.h>
#include <ctype.h>

# define MAX_CHARS 26
# define MAX_WORD_SIZE 32000


// A utility function to show results, The min heap
// contains n most frequent words so far, at any time
void displayMinHeap( MinHeap* minHeap )
{
int i;

// print top N word with frequency
for( i = 0; i < minHeap->count; ++i )
{
printf( "%s %d\n", minHeap->array[i].word,
minHeap->array[i].frequency );
}
}

// The main funtion that takes a file as input, add words to heap
// and Trie, finally shows result from heap
void printKMostFreq( FILE* fp, int n )
{
// Create a Min Heap of Size n
MinHeap* minHeap = createMinHeap( n );

// Create an empty Trie
TrieNode* root = NULL;

// A buffer to store one word at a time
char buffer[MAX_WORD_SIZE];

// Read words one by one from file. Insert the word in Trie and Min Heap
while( fscanf( fp, "%s", buffer ) != EOF )
insertTrieAndHeap(buffer, &root, minHeap);

// The Min Heap will have the n most frequent words, so print Min Heap nodes
displayMinHeap( minHeap );
}

int main()
{
int n;
scanf("%d", &n);
FILE *fp = fopen ("file.txt", "r");
if (fp == NULL)
printf ("File doesn't exist ");
else
printKMostFreq (fp, n);
return 0;
}

最佳答案

可以修改此程序来执行您想要的操作,但我不会为您执行此操作,至少不会在没有报酬的情况下执行。对于简单的解决方案,请尝试生成文本并将其写入文本文件。然后,您可以将该文件的内容传递到字数统计软件中。您也可以使用管道来做到这一点。

关于c - 将输入文本读入单词数组并去掉标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698746/

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