#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct str{
char s[21];
int n;
struct str *next;
};
struct str *head=NULL,*N=NULL;
int flag_fist=1;
int process(char*);
int main(){
FILE *f;
char string[21];
struct str *i,*l;
f=fopen("K:\\Workspase\\test\\test.txt","r");
while(1){
if(flag_fist){
head=malloc(sizeof(struct str)); //不检查是否分配到空间
N=head;
}else N=malloc(sizeof(struct str)); //同上
N->next=NULL;
fscanf(f,"%s",string);
if(feof(f)) break; //注意!!用这里控制循环,防止最后一个字符串被读多一次
if(!process(string)){ //如果字符串第一次出现就加入链表,否则只计数
strcpy(N->s,string);
N->n=1;
if(!flag_fist){
for(i=head;i&&*N->s>*i->s;l=i,i=i->next); //用插入的方法进行排序(根据首字母大小)
if(!i) l->next=N; //将节点放在尾
if(i==head) head=N,head->next=i; //将节点放在首
else l->next=N,N->next=i; //在中间的位置插入
}else flag_fist--;
}
}
for(;head;head=head->next){
printf("%s %d\n",head->s,head->n);
}
fclose(f);
return 0;
}
int process(char *s){
struct str *i=head;
for(;i&&strcmp(s,i->s);i=i->next);
if(!i) return 0; //该字符串没出现过
i->n++; //该字符串已经出现过
return 1;
}
统计文件中的各个字符串的数量
最新推荐文章于 2022-03-31 16:01:55 发布
本文介绍了一个使用C语言实现的程序,该程序从指定路径的文本文件中读取字符串,并根据字符串的首次出现与否及频率进行处理和排序。程序通过结构体和链表实现了字符串的动态存储和管理。
8997

被折叠的 条评论
为什么被折叠?



