| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 587 人关注过本帖
标题:文件操作与字符处理 不知道哪里出错了
只看楼主 加入收藏
余米
Rank: 1
来 自:开平
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-1-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
文件操作与字符处理 不知道哪里出错了
在当前目录中存在文件名为"case1.in"(其中case后为数字1,不是字母l,写错提交后会判错)的文本文件,
其内容为一篇英文文章(以EOF作为结束标志)。现要求读取该文本文件内容,统计文章中每个单词出现的次数,
并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典顺序输出,
不足5个单词时,按序输出全部单词)。程序中注意如下细节:
(1)    空格、标点符号与回车符起到分隔单词的作用。
(2)    文章一行的末尾可能有连字符,出现连字符时,该行最末的字符串与下行最先出现的字符串构一个单词;
(3)    名词缩写算一个单词;
(4)    数字不算单词;
(5)    单词不区分大小写;
(6)    输出时单词全使用小写;


#include"stdio.h"
#include"string.h"
#include"malloc.h"
#include"math.h"
#include"stdlib.h"
#include"ctype.h"
#define LEN sizeof(struct word)


struct word
{
    char a[21];
    int n;
    struct word *next;
};


int k=0;



struct word *receive(FILE*fp)
{
    int i=0;
    struct word *p1,*p2,*head;
    char b[21];
    head=(struct word *)malloc(LEN);
    p1=p2=head;

    while((b[i]=fgetc(fp))!=EOF)
    {
        if(isalpha(b[i]))
        {i++;}
        else
        {
            if(i!=0)
            {
                b[i]='\0';
                strlwr(b);
                strcpy(p1->a,b);
                p1=(struct word*)malloc(LEN);
                p2->next=p1;
                p2=p1;
                i=0;
            }
        }


        if(isalpha(b[i-1]))
        {
            b[i]='\0';
            strlwr(b);
            strcpy(p1->a,b);
        }
    }
   

        p1->next=NULL;

        return head;
    }






    void count(struct word *head)
    {
        struct word *P,*p1,*p2;
        P=head;


        while(P->next!=NULL)
        {
            P->n=1;
            p1=P;
            p2=P->next;

            do
            {
                if(strcmp(P->a,p2->a)==0)
                {
                    P->n++;
                    p1->next=p2->next;
                    p2->next=NULL;
                    p2=p1->next;
                }
                else
                {
                    p1=p2;
                    p2=p2->next;
                }
            }while(P->next!=NULL);

            P=P->next;
        }

        return;
    }



    void arrange(struct word *head)
    {
        struct word *p,*p1;
        char t[21];
        int i,j,T;

        p=head;

        while(p!=NULL)
        {
            k++;
            p=p->next;
        }


        for(i=1;i<k;i++)
        {
            p=head;
            p1=p->next;


            for(j=1;j<k-i;j++)
            {
                if(p->n<p1->n)
                {
                    T=p->n;
                    p->n=p1->n;
                    p1->n=T;
                    strcpy(t,p->a);
                    strcpy(p->a,p1->a);
                    strcpy(p1->next,t);
                }
                else
                    if(p->n==p1->n)
                    {
                        if(strcpy(p->a,p1->a)>0)
                        {
                            strcpy(t,p->a);
                            strcpy(p->a,p1->a);
                            strcpy(p1->a,t);
                        }
                    }
               

                p=p->next;
                p1=p1->next;
            }
        }


        return ;
    }



    int main()
    {
        FILE *fp;
        struct word *head,*p;
        int i;


        if((fp=fopen("case.txt","r"))==NULL)
            return 0;

        head=receive(fp);
        count(head);
        arrange(head);
        k--;


        if(k<5)
        {
            p=head;
            while(p->next!=NULL)
            {
                printf("%s%7d\n",p->a,p->n);
                p->next;
            }
        }
        else
        {
            p=head;
            for(i=0;i<5;i++)
            {
                printf("%s%7d\n",p->a,p->n);
                p=p->next;
            }
        }


        fclose(fp);

        return 0;
    }


搜索更多相关主题的帖子: 标点符号 文本文件 英文文章 字符串 
2012-02-13 10:46
余米
Rank: 1
来 自:开平
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-1-21
收藏
得分:0 
有人么????
2012-02-13 10:51
余米
Rank: 1
来 自:开平
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-1-21
收藏
得分:0 
99我啊,版主何在???
2012-02-13 11:59
BianChengNan
Rank: 8Rank: 8
等 级:贵宾
威 望:13
帖 子:302
专家分:972
注 册:2011-11-30
收藏
得分:20 
楼主还是想好怎么问问题再问吧,难道你让大家把你的程序跑一遍?再告诉你哪有问题?

我的群:149544757 C/C++/Assembly 喜欢交流的朋友进,进群请写消息
2012-02-13 13:44
余米
Rank: 1
来 自:开平
等 级:新手上路
帖 子:13
专家分:1
注 册:2012-1-21
收藏
得分:0 
我这个程序连读入字符都有问题,至少版主先帮我解决读入字符这部分吧,求求你,好人有好报~~~~~
2012-02-13 14:29
快速回复:文件操作与字符处理 不知道哪里出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020218 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved