微信排队小程序C语言,历时3天,终于写完一个小程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

struct zf{//单词链表结构

char word[50];

unsigned int num_word;

struct zf* next;

};

struct word_init{//单词总表

struct zf *lett[26];

}wordinit;

void delay(){//延时函数

long int num;

num=clock();

while((long int)clock()-num<=1000);

}

int main(int argc, char *argv[])

{

FILE *fp;

char fileadr[100],wordtemp[50];

char init_num='A';

int for_num=0;

struct zf *head,*q,*p;

while(1)//读取文件位置

{

printf("\t\t请在输入地址或直接将文件拖入对话框后按下回车:\n\t\t");

gets(fileadr);

if((fp=fopen(fileadr,"r"))==NULL){

printf("\t\t文件地址格式错误,请重新输入\n\t\t");

delay();

system("cls");

}else

break;

}

head=p=q=(struct zf*)malloc(sizeof(struct zf));

p->next='\0';

while(init_num<='Z'){//链表主结构,从A到Z

wordinit.lett[init_num-'A']=p;

p->word[0]=init_num;

p->word[1]='\0';

p->num_word=-1;

p->next=(struct zf*)malloc(sizeof(struct zf));

p=p->next;

p->next='\0';

init_num++;

}

struct zf *newadd;

while(!feof(fp)){//单词读取

int for_num=0;

char lettemp='\0';

for(;for_num<50&&(lettemp=fgetc(fp))!=EOF;for_num++){

if(lettemp>='A'&&lettemp<='Z'){

lettemp+=32;

wordtemp[for_num]=lettemp;

}else if(lettemp>='a'&&lettemp<='z'||lettemp=='-'){

wordtemp[for_num]=lettemp;

}else if(lettemp>='0'&&lettemp<='9'){

continue;

}else if(for_num==0){

for_num--;

}else if(for_num>0){

wordtemp[for_num]='\0';

break;

}

}

q=p=wordinit.lett[wordtemp[0]-'a'];

do{//单词数统计与增添链表内容

q=p;

p=p->next;

if(strcmp(p->word,wordtemp)==0){

p->num_word++;

break;

}else if(p->word[0]==wordtemp[0]-32+1&&p!='\0'){

newadd=(struct zf *)malloc(sizeof(struct zf));

q->next=newadd;

strcpy(newadd->word,wordtemp);

newadd->num_word=1;

newadd->next=p;

break;

}

}while(p!=wordinit.lett[wordtemp[0]-'a'+1]);

}

p=head;

if(fp=fopen("F:\\.txt","w+"))//文件输出

do{

fprintf(fp,"%s\t\t%d\n",p->word,p->num_word);

printf("\t\t%s\t\t%d\n",p->word,p->num_word);

p=p->next;

}while(p->next!='\0');

printf("单词统计结束,谢谢使用=_=");

exit(0);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值