标题:新人请教问题,可有偿,如果积分不够可加
只看楼主
Dliphard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-19
结帖率:0
已结贴  问题点数:20 回复次数:5 
新人请教问题,可有偿,如果积分不够可加
有一个关于文件读写的问题


这是main.cpp

#include<iostream>
#include <string.h>
#include <stdlib.h>
#include"map.h"
#include"model.h"
#define maxlen 100
#define None false

int BUS_NUM=4;
int STATION_NUM=30;
int ROUTE_NUM=56;

using namespace std;

struct BusMap busmap;

struct BUSES
{
    char busname[maxlen];
};

struct BUSESNUM
{
    int busnumber;
    int busstart;
    int busend;
};

struct STATIONS
{
    char stationname[2*maxlen];
};

struct ROUTES
{
    int firstnum;
    int secondnum;
    int thirdnum;
    int distancenum;
};

int LoadMapDate()
{
    struct BUSES BUSES[BUS_NUM];
    struct BUSESNUM BUSESNUM[BUS_NUM];
    struct STATIONS STATIONS[STATION_NUM];
    struct ROUTES ROUTES[ROUTE_NUM];

    FILE *busdata=fopen("buses.TXT","r");//要读取的文件指针
    FILE *busnumdata=fopen("busesnumbers.TXT","r");
    FILE *stationdata=fopen("stations.TXT","r");
    FILE *routedata=fopen("routes.TXT","r");

    busmap.bus_num=BUS_NUM;
    busmap.station_num=STATION_NUM;
    busmap.buses=(Bus*)malloc(sizeof(Bus)*BUS_NUM);
    busmap.stations=(Station*)malloc(sizeof(Station)*STATION_NUM);

    int i=0;
    if((busdata=fopen("buses.TXT","r"))==NULL)//判断文件是否为空
    {
        cout<<"Can not open this file\n"<<endl;
        return 0;
    }
    while(!feof(busdata))//从文件中读取数据
    {
        fscanf(busdata,"%s\n",&BUSES[i].busname);
        busmap.buses[i].name = BUSES[i].busname;
        busmap.buses[i].start=busmap.buses[i].end=None;
        //cout<<busmap.buses[i].name<<endl;
        i++;
    }
    fclose(busdata);
}
int FindBus(char *bus)//查找Bus对象
{
    for(int i=0;i<BUS_NUM;i++){
        //cout<<busmap.buses[i].name<<endl;      
        if(strcmp(busmap.buses[i].name,bus)==0){         
            return i;
        }
    }
    return -1;
}

int main(){
    LoadMapDate();
//    cout<<busmap.buses[1].name;
    for(int i=0;i<BUS_NUM;i++){
            cout<<busmap.buses[i].name<<endl;  
        }        
}






model.h

typedef struct Bus
{
    char *name;//公交名
    int start;//起点
    int end;//终点
}Bus;

typedef struct Station
{
    char *station;//站点名
    struct Route*routes;//从该站点出发的所有下行路线的链域
}Station;

typedef struct Route
{
    int station;//指向的站点索引号
    int bus;//公交索引号
    int distance;//两站之间公路的距离
    struct Route*next;//起始站点相同的,下一条下行路线
}Route;

typedef struct Path
{
    int station_num;//路径中站点数
    char **stations;//路径中站点数组
    char **buses;//站点与站点之间的路径数组
    int transfer;//换乘次数;
    int need_time;//所需时间
    struct Path *next;//指向下一个路径结点
}Path;




typedef struct BusMap
{

    Bus *buses;//公交线路数组
    Station *stations;//站点数组
    int station_num;//站点数
    int bus_num;//公交线路数
} BusMap;





map.h

int LoadMapDate();//读入信息
int FindBus(char *bus);//查找Bus对象
int FindStation(char *station);//查找Station对象
int GetBus(char *bus);//插入一个公交路线
int GetStation(char *station);//插入一个站点
void AddBus(int bus,int pStart,int pEnd);//添加公交信息
int AddRoute(int pBus,int pStart,int pEnd,int distance);//添加路段信息,形成邻接表
int Contrast(int *busnumber,int busname,int number);
int QueryStation(char *pStation);//查询站点信息,输出该站点所经线路信息
void QueryBus(char *pBus);



运行结果是这样
13
?
搜索更多相关主题的帖子: int struct 站点 name char 
2021-03-19 21:38
Dliphard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-19
得分:0 
buses.h
13
35
57
79
2021-03-19 21:39
Dliphard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-19
得分:0 
如果有人知道,或者想更加了解问题,可以私聊我QQ:501823439
望今晚可以解决,谢谢大家
2021-03-19 21:41
Dliphard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-19
得分:0 
求解
2021-03-19 21:42
Dliphard
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-19
得分:0 
有偿,可以不止积分,谢谢大家
2021-03-19 21:43
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:20 
瞅了一眼,问题还不少,你开了4个文件,关了1个

typedef struct Bus
{
    char *name;//公交名
    int start;//起点
    int end;//终点
}Bus;

这个申请内存,name只申请到一个char指针大小,存名字会出错,下同。
2021-03-19 23:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505185-1-1.html




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

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