| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 919 人关注过本帖
标题:请教大虾!!!!!!~~~~~~~~~~~~~~
取消只看楼主 加入收藏
wpwangpeng
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-12-11
收藏
 问题点数:0 回复次数:0 
请教大虾!!!!!!~~~~~~~~~~~~~~
小弟初学编程,编了一个"文学助手的"代码,请教大虾,帮我指正其中的不足!!!!!!!
小弟不胜感激!!!!!!!!!
#include "string.h"
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define N 2       /*预定义关键字数目*/
#define M 10       /*keyword的长度*/
struct linelist
{
int linenum;
struct linelist *next;
};
struct keyword
{
struct string *string1;
int num;
struct linelist *head,*tail;
}keyword1[N];

struct string
{char string2[M];
}string3[N]={'/0'};
FILE *fp=NULL;
int row=0;              

void init() /*初始化所定义的结构体*/
{
int i;
for (i=0;i<N;i++)
{keyword1[i].num=0;
keyword1[i].string1=string3[i].string2;
keyword1[i].head=NULL;
keyword1[i].tail=NULL;
}
}
void fileopen()
{
char filename[30];
for (;;)
{
printf("请输入要查找关键字的文件:");
scanf("%s",filename);
if ((fp=fopen(filename,"r"))==NULL)
printf("不能打开此文件!请重新输入!\n");
else
break;
}
}

void inputkeyword()
{
int i;
for (i=0;i<N;i++)
{printf("请输入要查找的关键字:");
scanf("%s",string3[i].string2);
}
}

void compare(Array)
char Array[];
{
int i;
struct linelist *p,*q;
for (i=0;i<N;i++)
{  if(!strcmp(Array,string3[i].string2))
{ keyword1[i].num++;
if (keyword1[i].num==1)
{
p=(struct linelist *)malloc(sizeof(struct linelist));
p->linenum=row;
p->next=NULL;
keyword1[i].head=p;
keyword1[i].tail=p;
}
else
if (row!=keyword1[i].tail->linenum)
{
q=(struct linelist *)malloc(sizeof(struct linelist));
q->linenum=row;
q->next=NULL;
keyword1[i].tail->next=q;
keyword1[i].tail=q;
}
}
}
}

void loadcmp(Array)
char Array[];
{
int i,j;
char *p,*q,temp[20];
q=Array;
while (*q!='\n')
{ p=q;
while (*q!='\n')
{
if (*q==' ')
{ p++;
q++;
}
if (*q!=' ')
{q++;
if (*q==' ')break;
}
}
j=q-p;
for (i=0;i<j;i++)
{ temp[i]=*p;
p++;
}
temp[j]='\0';
compare(temp);
}
}

void readline()
{
char buffer[41];
while (!feof(fp))
{row++;
fgets(buffer,40,fp);
loadcmp(buffer);
}
}

void showresult()
{
int i;
struct linelist *p;
printf("\n\n\n");
printf("结果:\n");
for (i=0; i<N; i++)
{
printf("%s",string3[i].string2);
printf("     ");
printf("出现 %d 次",keyword1[i].num);
printf("     ");
printf("他们所在行:");
p=keyword1[i].head;
while (p!=NULL)
{ printf("%3d",p->linenum);
p=p->next;
}
printf("\n");

}
}
void destroy()

{ int i;
struct linelist *p,*q;
for (i=0; i<N; i++)
{
p=keyword1[i].head;
while (p!=NULL)
{ q=p;
p=p->next;
free(q);
}
}
fclose(fp);
}

main()
{ init();
fileopen();
inputkeyword();
readline();
showresult();
destroy();
}
搜索更多相关主题的帖子: 不胜感激 初学编程 keyword include 关键字 
2007-12-13 16:59
快速回复:请教大虾!!!!!!~~~~~~~~~~~~~~
数据加载中...
 
   



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

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