资源简介

对读入的某个文本文件input.txt中,拆出英文单词,输出一个按字典顺序排列的单词表, 结果输出在文本文件output.txt中,每个单词一行,并在单词后输出该单词出现的个数, 两个字段之间用逗号分隔。 约定单词仅由英文字母组成,单词间由非英文字母分隔,相同单词只输出一个,大小写不区分。 例如文本文件input.txt为: Hello world. Hello every one. Let us go. 则输出文本文件output.txt为: every,1 go,1 hello,2 let,1 one,1 us,1 world,1

资源截图

代码片段和文件信息

/*版权:福建星网锐捷网络有限公司
*作者:XXX 
*功能:实现从文件中读取没一个单词,并对单词进行统计,
*按字母顺序排列存入另一个文件中
*时间:2010-9-2 到 2010-9-3*/

#include
#include
#include

typedef struct Str{
    struct Str *next;
    char       *str;
    int          num;
}f_str;

char * p_strs;           /*input文件中是所有单词*/
int    isf_len;          /*input文件的长度*/

/*从文件input中读取文件内容,并返回给函数f_get_string*/
char * f_get_string()
{
    FILE * in_file = NULL;
    
    in_file = fopen(“d:/input.txt“ “rb“);
    if (in_file == NULL) {
        printf(“error!“);
    } else {
        fseek(in_file 0 SEEK_END);
        isf_len = ftell(in_file);                  /*得到文件的长度*/
        if (isf_len != -1) {
            fseek(in_file 0 SEEK_SET);      
            p_strs = (char *)malloc(isf_len+100);
            memset(p_strs 0 isf_len+100);
            fread(p_strs sizeof(char) isf_len in_file);    /*将文件的全部内容给p_strs*/
         }
    }
    return p_strs;
}

/*将input文件中所有处理后的单词存入output文件中*/
void f_out_string(f_str * head)
{
    FILE * out_file = NULL;
    f_str * hp;
    char * sstr;
    char * sss = ““;
    
    out_file = fopen(“d:/output.txt“ “wb+“);
    if (out_file == NULL) {
        printf(“error!“);
    } else {
        hp = head;
        while (hp != NULL) {
            sstr = malloc(20);
            if (strcmp(hp->str sss) != 0) {      /*strcmp比较两字符串的大小*/
                sprintf(sstr “%s    %d\r\n“ hp->str hp->num);   /*将字符串型hp->str和整形的hp->num加到字符串sstr*/
                fwrite(sstr sizeof(char) strlen(sstr) out_file);   /*输出字符串到out_file*/
            }
            hp = hp->next;
            free(sstr);
        }
        fclose(out_file);
    }
}

/*对文件中每个单词统计,并按按字母顺序存储到链表中*/
f_str * order_str(f_str * head f_str * fstr int i)
{
    f_str  * hp = NULL;
    
    if (i == 1) {
        head = fstr;
        fstr->next = NULL;
    } else {
        hp = head;
        while (hp != NULL) {
            if (strcmp(hp->str fstr->str) > 0) {     /*strcmp比较两字符串的大小*/
                head = fstr;
                fstr->next = hp;
                break;
            } else if (strcmp(hp->str fstr->str) < 0
                && strcmp

评论

共有 条评论