| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2993 人关注过本帖
标题:c语言 strcmp strcpy
取消只看楼主 加入收藏
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
 问题点数:0 回复次数:7 
c语言 strcmp strcpy

大姐们大哥们看以下我这个程序怎么了
那里有问题啊?
#include<stdio.h>
#include<string.h>

struct tree
{
char word[20];
int count;
int sign;
struct tree * parent;
struct tree * leftson;
struct tree * rightson;
};


int i=0;
struct tree *treeroot;
char preword[20];
char temp[20];
FILE *fp;

Get_word(FILE *fp)
{
char ch;
int i=0;
ch=fgetc(fp);

strcpy(preword,temp);
while(ch!=' '&&ch!='\n'&&ch!='\r'&&ch!='\t'&&ch!=','&&ch!='.'&&ch!='\"'&&ch!='\'') {
preword[i]= ch;
i++;
ch=fgetc(fp);
}
if(i==0) return 0;
printf("the getword is :%s\n",preword);
return 0;
}

Sis_word(char *preword,struct tree *nangua)
{
struct tree *p;
if(strcmp(preword,nangua->word)>0)
{
if(nangua->rightson!=NULL) Sis_word(preword,nangua->rightson);
else if(nangua->rightson==NULL)
{
p =(struct tree*)malloc(sizeof(struct tree));

strncpy(p->word, preword,20);
p->count = 1;
printf("i want to insert this new word at right:%s\n",preword);
printf("the p.word is:%s\n",p->word);
p->rightson = NULL;
p->leftson = NULL;
p->parent = nangua;
p->sign=0;
nangua->rightson=p;
strcpy(preword,temp);
printf("changed word*****%s\n",preword);
return 0;
}
}
else if(strcmp(preword,nangua->word)==0) nangua->count++;
else if(strcmp(preword,nangua->word)<0)
{
if(nangua->leftson!=NULL) Sis_word(preword,nangua->leftson);
else if(nangua->leftson==NULL)
{
p =(struct tree*)malloc(sizeof(struct tree));

strncpy(p->word,preword,20);
p->count = 1;
printf("i want to insert this new word at left:%s\n",preword);
printf("the p.word is:%s\n",p->word);
p->rightson = NULL;
p->leftson = NULL;
p->parent = nangua;
p->sign=0;
nangua->leftson =p;
strcpy(preword,temp);
printf("changed word*****%s\n",preword);
return 0;
}
}
}

visit(struct tree *treeroot)
{
if(treeroot->leftson!=NULL) visit(treeroot->leftson);

else if(treeroot->leftson==NULL&&treeroot->rightson!=NULL)
{
printf("%s***%d",treeroot->word,treeroot->count);
treeroot->sign=1;
visit(treeroot->rightson);
}

else if(treeroot->leftson==NULL&&treeroot->rightson==NULL)
{
if(treeroot->sign==0)
{
printf("10%s*10%d\n",treeroot->word,treeroot->count);
treeroot->sign=1;
}
if(treeroot->parent!=NULL) return 0;
if(treeroot->parent->sign==0)
treeroot->parent->leftson=NULL;
if(treeroot->parent->sign==1)
treeroot->parent->rightson=NULL;

visit(treeroot->parent);
}
}

main()
{
fp = fopen("A.H","r");
Get_word(fp);

for(i=0;i<20;i++) temp[i]=' ';
i=0;

strcpy(treeroot->word,preword);
treeroot->count = 1;
printf("yeah the first word is %s\n",preword);
treeroot->rightson = NULL;
treeroot->leftson = NULL;

printf("preword:%s\n",preword);
strcpy(preword,temp);

do{
Get_word(fp);
if(!strcmp(preword,temp)) visit(treeroot);

Sis_word(preword,treeroot);
i=strcmp(preword,temp);
}while(strcmp(preword,temp)==0);

}


循环怎么也进不去
用feof(fp);也不行
急救啊!!!!

搜索更多相关主题的帖子: c语言 strcmp strcpy 
2006-03-16 08:55
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
是想统计一片文章的词频
2006-03-16 10:43
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
我是想先用一个二叉排序树存储单词的数量
如果有相同的词则加一
没有则建立一个接点

后来中序遍历这个树
2006-03-16 11:03
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
struct tree * parent
后来遍历的时候用的
2006-03-16 11:52
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 

谢谢了
我也是弄了一天了
这是我第一次编这样的程序
所以好多不知道

2006-03-16 13:14
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
谢谢,很大收获呀
2006-03-16 15:14
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 
可是如果把叶子节点遍历后,其他节点就没有办法遍历了
2006-03-16 15:21
strcmp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-3-16
收藏
得分:0 

想清楚了

这样遍历要简单多了
我开始也想过这样
但总以为只能访问叶接点
现在看来
其实递归就是一个蛮好的栈

2006-03-16 15:48
快速回复:c语言 strcmp strcpy
数据加载中...
 
   



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

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