永发信息网

C语言程序设计,植物信息查询。有十种植物的信息,根据植物名查询该植物的所属科属,形态特征和使用价值

答案:1  悬赏:20  手机版
解决时间 2021-02-17 00:30
C语言程序设计,植物信息查询。有十种植物的信息,根据植物名查询该植物的所属科属,形态特征和使用价值
最佳答案
植物数据我列举了一些放在txt文件中,程序从txt文件读取加载到链表中,再通过用户输入名称查找链表信息。
txt文件格式每行一个植物:植物名 空格 科属 空格 形态特征 空格 使用价值 回车。
八宝景天 景天科景天属 多年生肉质草本植物 园林绿化,具有药用价值。
玉兰 木兰科木兰属玉兰亚属玉兰 落叶乔木 园林绿化。
银杏 银杏科银杏属 落叶大乔木 可食用,药用,园林绿化。
槐树 豆科 五叶槐 园林绿化。
红枫 槭树科槭树属 落叶小乔木 园林绿化。
海棠 属蔷薇科苹果亚科苹果属 落叶小乔木 园林绿化。
三色堇 堇菜科堇菜属 多年生草本植物 具有药用价值,中国多用作园林绿化。
月季 蔷薇科蔷薇属 半常绿低矮灌木 园林绿化。
杨树 杨柳科杨属 乔木或灌木 园林绿化。
石榴树 石榴科 落叶灌木或小乔木 园林绿化,果实食用,药用。
#include
#include
#include
typedef struct plant
{
    char name[20];
    char genera[50];
    char charas[1000];
    char value[100];
    struct plant *next;
}PLANT;
PLANT *readFile(FILE *fp);//返回头节点指针
PLANT *findByName(PLANT *plantHead,char name[]);
int main()
{
    char name[20];
    PLANT *plantHead=NULL,*plantFind=NULL;
    FILE *fp=NULL;
    if((fp=fopen("C:\list.txt","rt+"))==NULL)
    {
        printf("Cannot open file strike any key exit!");
        exit(1);
    }
    plantHead=readFile(fp);
    printf("请输入要查找的植物名称:");
    scanf("%s",name);
    plantFind=findByName(plantHead,name);
    printf("%s的所属科属:%s
形态特征:%s
使用价值:%s",plantFind->name,plantFind->genera,plantFind->charas,plantFind->value);
    return 0;
}
PLANT *findByName(PLANT *plantHead,char name[])
{
    while(plantHead->next!=NULL)
    {
        if(!strcmp(plantHead->next->name,name))
            return plantHead->next;
        plantHead=plantHead->next;
    }
    return NULL;
}
PLANT *readFile(FILE *fp)//返回头节点指针
{
    PLANT *plantNew=NULL,*plantHead=NULL,*plantTail=NULL;
    printf("----开始读取文件到链表----
");
    fseek(fp, 0, SEEK_SET);//文件流指针重置到开头
    plantHead=(PLANT *)malloc(sizeof(PLANT));
    plantHead->next=NULL;
    plantNew=(PLANT *)malloc(sizeof(PLANT));
    plantNew->next=NULL;
    while(fscanf(fp,"%s %s %s %s",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value)!=-1)
    {
        if(plantHead->next==NULL)
            plantHead->next=plantNew;
        else
           plantTail->next=plantNew;

        plantTail=plantNew;
        printf("读取信息:名:%s 科属:%s 特征:%s 价值:%s
",plantNew->name,plantNew->genera,plantNew->charas,plantNew->value);
        plantNew=(PLANT *)malloc(sizeof(PLANT));
        plantNew->next=NULL;
    }
    free(plantNew);
    printf("----数据读取完成----
");
    return plantHead;
}追问开发环境是code::blocks应该怎么写代码呀
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
娄星区娄底七三八财务这个地址怎么能查询到,
我是属狗的女士,1982年阴历11月25日出生的,
秦与西周战国末年后的秦国就是变法后很多年的
江门市市区交通运输管理总站外海交通运输管理
梅江区梅州江南社区法律进社区领导小组地址是
香蕉水溶解塑料表面有什么特征?
连云港市工投集团产业投资有限公司在什么地方
淇滨区鹤壁七夕网络客房地址在哪,我要去那里
庭院大门能过车的最佳设计尺寸
描写干净的四字词语除干干净净.一尘不染.
摔跤吧,爸爸里叔侄俩喝的什么酒
谋略什么意思
为什么装了独立显卡开机要进入了系统显示屏才
七彩宝贝小太阳幼儿园在什么地方啊,我要过去
道不拾遗,山无盗贼,家给人足,民勇于公战,怯于
推荐资讯
腮腺肿大一般持续A.1~2天B.2~3天C.3~4天D.
从香港港澳码头怎样去大屿山
银行卡上突然多出了一笔钱,是怎么回事
三星gt-l9082i旧机回收多少钱
复读浪费时间吗?二本复读一年考入武大,一年时
工厂风水是以办公室大门为主吗
青雪在讲有声书方面的水平如何?
被口头威胁了,该怎么办?
【靠山山倒】有一句话叫-“靠山山倒-靠水.”
如何做出最聪明的决策 pdf
新光公司设计一份员工招聘申请表
在数控上打六个孔怎么算六个孔的位置
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?