计算文本文件中每个单词的出现次数 #包括 #包括 #包括 int word_count() { 文件*p; char ch; int w=0; p=fopen(“input.txt”,“r”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { ch=fgetc(p); while(ch!=EOF) { 如果(ch=''| | ch='\n') { w++; } ch=fgetc(p); } 返回w; } fclose(p); } void main() { 文件*fp1,*fp2; char ch; void*p; inti,n; w=单词数() fp2=fopen(“output.txt”,“w”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { fprintf(“单词\t\t出现次数\t\n”); 出口(0); } fp1=fopen(“input.txt”,“r”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { 对于(i=0;i
我的教授要求我写一个c代码,读取一个文件并找出每个单词的出现次数。这是我尝试过的代码,但它要求我使用比指针更好的东西,可能是一个哈希表,跟踪所有单词并计算它们的出现次数。计算文本文件中每个单词的出现次数 #包括 #包括 #包括 int word_count() { 文件*p; char ch; int w=0; p=fopen(“input.txt”,“r”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { ch=fgetc(p); while(ch!=EOF) { 如果(ch=''| | ch='\n') { w++; } ch=fgetc(p); } 返回w; } fclose(p); } void main() { 文件*fp1,*fp2; char ch; void*p; inti,n; w=单词数() fp2=fopen(“output.txt”,“w”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { fprintf(“单词\t\t出现次数\t\n”); 出口(0); } fp1=fopen(“input.txt”,“r”); if(p==NULL) { printf(“打开文件时出错”); 出口(0); } 其他的 { 对于(i=0;i,c,algorithm,file,data-structures,hashtable,C,Algorithm,File,Data Structures,Hashtable,我的教授要求我写一个c代码,读取一个文件并找出每个单词的出现次数。这是我尝试过的代码,但它要求我使用比指针更好的东西,可能是一个哈希表,跟踪所有单词并计算它们的出现次数。 我在选择正确的数据结构方面有困难,因为我只是初学者,我需要帮助选择数据结构。你能列出你想要的方法或数据结构吗?你知道每种方法的优缺点吗?内存需求,执行时间,易于实现等等。我会考虑创建两个函数。浏览一次您的文件,存储所有单词和其他单词,以计算每个单词的出现次数。@MohitJain我想过使用哈希表,但我不确定还能使用什么。我还想
我在选择正确的数据结构方面有困难,因为我只是初学者,我需要帮助选择数据结构。你能列出你想要的方法或数据结构吗?你知道每种方法的优缺点吗?内存需求,执行时间,易于实现等等。我会考虑创建两个函数。浏览一次您的文件,存储所有单词和其他单词,以计算每个单词的出现次数。@MohitJain我想过使用哈希表,但我不确定还能使用什么。我还想过使用堆栈或链表。指针问题或比较每个单词会导致时间复杂性,我相信[O(n)]@谢谢你的建议。我会试试的that@Harshithaks我不知道堆栈在这里有什么用处。但是将每个单词存储在链表中,或者散列或trie听起来似乎是合理的。每次搜索新词时,如果它在链表中,则增加计数。如果没有,则插入。(链表中插入排序)你能列出你想要的方法或数据结构吗?你知道每种方法的优点和缺点吗?内存需求,执行时间,易于实现等等。我会考虑创建两个函数。一个你会通过你的文件一次,存储所有的单词和另一个来计算每个单词的出现次数。@穆村hitJain我想过使用哈希表,但我不确定还能使用什么。我也想过使用堆栈或链表。指针或比较每个单词的问题会导致时间复杂性,我相信[O(n)]@谢谢你的建议。我会试试的that@Harshithaks我不知道堆栈在这里有什么用处。但是将每个单词存储在链表中,或者散列或trie听起来似乎是合理的。每次搜索新词时,如果它在链表中,则增加计数。如果没有,则插入。(链表中插入排序)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int word_count()
{
FILE *p;
char ch;
int w = 0;
p = fopen("input.txt", "r");
if (p == NULL)
{
printf("Error opening file\n");
exit(0);
}
else
{
ch = fgetc(p);
while (ch != EOF)
{
if (ch == ' ' || ch == '\n')
{
w++;
}
ch = fgetc(p);
}
return w;
}
fclose(p);
}
void main()
{
FILE *fp1, *fp2;
char ch;
void *p;
int i, n;
w = word_count()
fp2 = fopen("output.txt", "w");
if (p == NULL)
{
printf("Error opening file\n");
exit(0);
}
else
{
fprintf("Words\t\t occurrences\t\n);
exit(0);
}
fp1 = fopen("input.txt", "r");
if (p == NULL)
{
printf("Error opening file\n");
exit(0);
}
else
{
for (i = 0; i < w; i++)
{
ch = fgetc(f1);
p = &ch;
p++;
while (ch != EOF)
{
while (strcmp(ch, *p) == 0)
{
n++;
p++;
}
fputc(ch, fp2);
fputc(n, fp2);
}
}
ch++;
}
fclose(fp1);
fclose(fp2);
}