计算文本文件中每个单词的出现次数 #包括 #包括 #包括 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

计算文本文件中每个单词的出现次数 #包括 #包括 #包括 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我想过使用哈希表,但我不确定还能使用什么。我还想

我的教授要求我写一个c代码,读取一个文件并找出每个单词的出现次数。这是我尝试过的代码,但它要求我使用比指针更好的东西,可能是一个哈希表,跟踪所有单词并计算它们的出现次数。
我在选择正确的数据结构方面有困难,因为我只是初学者,我需要帮助选择数据结构。

你能列出你想要的方法或数据结构吗?你知道每种方法的优缺点吗?内存需求,执行时间,易于实现等等。我会考虑创建两个函数。浏览一次您的文件,存储所有单词和其他单词,以计算每个单词的出现次数。@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);
}