c语言编程,植物信息查询。有十种植物信息。根据植物名称,可以查询植物的科、属、形态特征和利用价值。

我列出了一些工厂数据,并把它们放在一个txt文件中。程序从txt文件中读取它们并加载到链表中,然后通过用户输入的名字搜索链表信息。

Txt文件格式每行一个植物:植物名称空白科属?空间?形态特征?空间?使用值输入。

巴别景天?景天属的景天?多年生肉质草本植物?园林绿化有药用价值。

木兰花?木兰科木兰亚属木兰属?落叶树?景观美化。

银杏?银杏科的银杏?落叶树?食用,药用,景观美化。

槐花?豆科五叶蝗?景观美化。

红枫?槭树科?小落叶树?景观美化。

海棠?属于蔷薇科苹果属?小落叶树?景观美化。

三色堇?堇菜科堇菜?多年生草本植物?具有药用价值,中国多用于园林绿化。

罗斯?蔷薇科蔷薇?半常绿低矮灌木?景观美化。

白杨?杨柳科的杨?树木还是灌木?景观美化。

石榴树?石榴?落叶灌木还是小树?园林绿化,水果食用,药用。# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltstring.h & gt

typedef?struct?植物

{

夏尔?名称[20];

夏尔?属[50];

夏尔?轮藻[1000];

夏尔?值[100];

struct?植物?*下一个;

}植物;

植物?*readFile(文件?* FP);//返回头节点指针。

植物?*findByName(PLANT?*plantHead,char?name[]);

int?主()

{

夏尔?名称[20];

植物?*plantHead=NULL,* plantFind = NULL

文件?* fp = NULL

if((fp=fopen("C:\\list.txt "," rt+")= = NULL)

{

printf("不能?开放?文件?罢工?有吗?钥匙?退出!”);

退出(1);

}

plant head = readFile(FP);

Printf("请输入您要查找的植物名称:");

scanf("%s ",名称);

plantFind=findByName(plantHead,name);

Printf("属于% s:% s \ n形态特征:% s \ n使用值:% s ",plant find-& gt;名称,植物查找-& gt;属,plant find->;charas,plant find-& gt;值);

回归?0;

}

植物?*findByName(PLANT?*plantHead,char?姓名[])

{

while(plant head->;下一个!=空)

{

如果(!strcmp(plant head-& gt;下一个-& gt;名字,名字))

回归?plant head->;接下来;

plant head = plant head-& gt;接下来;

}

回归?NULL

}

植物?*readFile(文件?*fp)//返回头节点指针。

{

植物?*plantNew=NULL,*plantHead=NULL,* plantTail = NULL

printf("-\ n ");

fseek(fp,?0,?SEEK _ SET);//文件流指针被重置到开头

plantHead=(植物?*)malloc(sizeof(PLANT));

plant head->;next = NULL

plantNew=(植物?*)malloc(sizeof(PLANT));

plant new-& gt;next = NULL

while(fscanf(fp," %s?%s?%s?%s ",plant new-& gt;名称,plant new-& gt;属,植物新->;charas,plant new-& gt;值)!=-1)

{

if(plant head-& gt;next==NULL)

plant head->;next = plantNew

其他

plant tail->;next = plantNew

plantTail = plantNew

Printf("读取信息:名称:%s?家庭:%s?功能:%s?值:%s\n ",plant new-& gt;名称,plant new-& gt;属,植物新->;charas,plant new-& gt;值);

plantNew=(植物?*)malloc(sizeof(PLANT));

plant new-& gt;next = NULL

}

免费(plant new);

printf("-数据读取完成-\ n ");

回归?plantHead

}