| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:我实在是不知道为什么了
只看楼主 加入收藏
yuxiaojicai
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-7-8
收藏
 问题点数:0 回复次数:1 
我实在是不知道为什么了
修改了一个"文学研究助手"的代码 但到最后总还是出现两个问题
7: Declaration missing ;
8: Declaration missing ;
同学和我也实在是没有办法了 哪位朋友可以指点下啊 下面是源程序

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
/*定义文学助手的核心结构*/
typedef struct{
String art;
Stack pos;
int counter;/*存储匹配次数的计数器*/
char *key;/*存储需要匹配的字符串*/
}ArtAss;
/*初始化栈和计数器,关键字.*/
void InitArtAss(ArtAss *A,char *s,char *key)
{
/*用key初始化串成员*/
StrAssign(&((*A).art),s);
/*初始化栈成员*/
InitStack(&((*A).pos));
/*初始化计数器成员*/
(*A).counter=0;
/*初始化搜索关键字*/
(*A).key=key;
return;
}
/*在String中搜索key,并把出现的次数保存到counter,把位置保存到pos栈.*/
void BeginSearch(ArtAss *A)
{
int index=0;
/*若A为空或者成员未初始化,返回*/
if(A==NULL||(*A).key==NULL)
return;
/*搜索A,若匹配,把位置入栈
继续搜索,若匹配,入栈,
直到串的尾.*/
do
{
index=IndexOfS((*A).art,(*A).key,index);
if(index<0)
break;
Push(&((*A).pos),index);
(*A).counter++;
index++;
}while(index>0);
}
/*打印辅助*/
void DisplayAssitance(int e)
{
printf("%d,",e);
}
/*打印搜索结果.*/
void Display(ArtAss A,int rowCount)
{
void(*visit)()=DisplayAssitance;
/*若A为空,返回*/
if(&A==NULL)
return;
/*若记录数目为0,打印未找到信息.*/
if(A.counter==0)
{
return;
}
/*否则,遍历栈,打印具体位置.*/
else
{
printf("\nLine %d:| appears %d times on pos",rowCount,A.counter);
StackTraverse(A.pos,visit);
return;
}
}
/*清空A和A的元素.*/
void ClearArt(ArtAss *A)
{
/*若A不存在或者成员未初始化,返回*/
if(A==NULL||(*A).key==NULL)
return;
/*清空计数器和栈.*/
ClearStack(&((*A).pos));
(*A).counter=0;
return;
}
/*销毁A和A的栈,关键字和统计次数记录.*/
void DestroyArt(ArtAss *A)
{
/*先清空A*/
/*若A不存在或者成员未初始化,返回*/
if(A==NULL||(*A).key==NULL)
return;
/*清空计数器和栈.*/
ClearStack(&((*A).pos));
(*A).counter=0;
/*销毁A*/
ClearString(&((*A).art));
ClearStack(&((*A).pos));
(*A).counter=0;
(*A).key=NULL;
return;
}
/*更改A的搜索关键字.*/
void Assign(ArtAss *A,char *key)
{
/*若A或者A的成员未初始化,返回*/
if(A==NULL)
return;
/*清空计数器和栈.*/
ClearStack(&((*A).pos));
(*A).counter=0;
/*用key重新初始化A*/
(*A).key=key;
return;
}
/*主演示函数*/
void ArtAssDemo()
{
int c=1,count=0,rowCount=0;
FILE *file=NULL,*fileKey;
char *path="test",*keys="keys",*string[1000],*key[100];
char choose='Y';
ArtAss art;
/*desplay a menu and get user's choice*/
for(;c!=0;)
{
clrscr();/*printChoice*/{
count=0;
puts("0.Exit.");
puts("1.open aim file.");
puts("2.look up aim file's content.");
puts("3.input your search keywords.");
puts("4.load your search keywords from file.");
puts("5.display your keywords.");
puts("6.begin statistic.");
fflush(stdin);scanf("%d",&c);
clrscr();/*printChoice*/
}
switch(c)/*process*/
{
case 0:
break;
case 1:/*to create a file.*/{
puts("input the path of file:");
fflush(stdin);gets(path);
/*先以读方式打开*/
file=fopen(path,"rt+");
if(file==NULL)
{
/*以建立方式打开*/
file=fopen(path,"wt+");
if(file==NULL)
{
puts("file not exists and create file failed.");
sleep(2);
break;
}
}
/*关闭文件,需要读时再打开*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
puts("file open success!");
sleep(1);
}
break;
case 2:/*to look up the content of file*/{
file=fopen(path,"rt+");
/*检测文件指针的合法性*/
if(file==NULL||feof(file)==1)
{
puts("file is empty.");
break;
}
/*获取行,并显示出来*/
puts("begin to read file.");
sleep(1);
while(!feof(file))
{
fgets(string,9999,file);
printf("Line %d:| ",count);
fputs(string,stdout);
sleep(1);count++;
}
puts("\nfinished read of file.");
Pause2();
/*关闭文件流*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
}
break;
case 3:/*to input some keywords*/{
file=fopen(keys,"rt+");
/*检测文件指针的合法性*/
if(file==NULL)
{
file=fopen(keys,"wt+");
if(file==NULL)
{
puts("file create failed.");
break;
}
}
for(;;)
{
puts("enter a keywords:");
fflush(stdin);gets(key);
/*把key写入keys文件.*/
fputs(key,file);
puts("do you want to continue?Y/N");
fflush(stdin);choose=getch();
if(choose=='N'||choose=='n')
break;
}
/*关闭文件流*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
}
break;
case 4:/*to load the keys from file*/{
puts("input the keys file path:");
fflush(stdin);gets(keys);
file=fopen(keys,"rt+");
/*检测文件指针的合法性*/
if(file==NULL)
{
puts("invalidate path!");
sleep(1);
break;
}
puts("keys has been loaded success.");
Pause2();
}
break;
case 5:/*to display keywords*/{
file=fopen(keys,"rt+");
/*检测文件指针的合法性*/
if(file==NULL)
{
puts("no key.");
break;
}
/*获取行,并显示key出来*/
puts("begin to read keys.");
sleep(1);
while(!feof(file))
{
fgets(key,9999,file);
printf("Keys %d:| ",count);
fputs(key,stdout);
sleep(1);count++;
}
puts("\nfinished read of keys.");
Pause2();
/*关闭文件流*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
}
break;
case 6:/*to begin statistic the keys in aim content file*/{
fileKey=fopen(keys,"rt+");
/*检测文件指针的合法性*/
if(fileKey==NULL)
{
puts("no key.");
sleep(1);break;
}
/*获取行,并显示key出来*/
while(!feof(fileKey))
{
/*初始化行计数器*/
rowCount=0;
fgets(key,100,fileKey);
/*打印头信息*/
printf("\n\n\n___________________________________________________________\nKeys %d:%s",count,key);
/*here, we begin the main kernel*/{
/*先读取内容.*/
file=fopen(path,"rt+");
/*检测文件指针的合法性*/
if(file==NULL||feof(file)==1)
{
puts("file is empty.");
break;
}
/*获取行,并显示出来*/
while(!feof(file))
{
fgets(string,1000,file);
/*begin inner kernel here*/{
/*从外层循环中获取key,从内层循环中获取一行string.*/
InitArtAss(&art,string,key);
/*好了,我们开始统计key在一行中的记录了.*/
BeginSearch(&art);
}
/*end inner kernel here*/
/*处理完一个key,需要打印结果并销毁A*/
Display(art,rowCount);
DestroyArt(&art);
rowCount++;
}
/*关闭文件流*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
/*读取内容结束,结束一个key的任务*/
}
/*here,the end of our kernel*/
/*打印一个关键字信息的尾*/
count++;
sleep(1);
}
printf("\n\n\n");Pause2();
/*关闭文件流*/
if(fileKey!=NULL)/*should close the file stream*/{
fclose(fileKey);
}
}
break;
}
}
/*destructing some menbers*/
if(file!=NULL)/*should close the file stream*/{
fclose(file);
}
}
/*主调用函数*/
void main()
{
ArtAssDemo();
}
2006-07-08 23:36
yuxiaojicai
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-7-8
收藏
得分:0 

哪个大侠可以修正下啊 ,自己可以送个8位的qq作为报答
可惜自己学的太垃圾了~~~

[此贴子已经被作者于2006-7-8 23:42:50编辑过]

2006-07-08 23:37
快速回复:我实在是不知道为什么了
数据加载中...
 
   



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

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