My C++ Program has an error like this "ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] ". And it happens on all code inside inbus function. I need help for this, please help me :(
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
#include <ctype.h>
#include <string>
#define MAX 100
using namespace std;
struct Transport {
    char KotaAwal[20]; //Kota asal
    char KotaAkhir[20]; //Kota tujuan
    int Jarak; //Jarak antar kota
    char Skip;
 };
struct stack {
    char KotaAwal[20]; //Kota asal
    char KotaAkhir[20]; //Kota tujuan
    int Jrk; //Jarak antar kota };
};
struct Transport bus[MAX]; //struct menggunakan jalur Bus
struct stack btstack[MAX]; //struct menggunakan traking
int buspos=0;
int Findpos=0;
int Tos;
void setup();
void route(char *KotaAkhir);
void inbus(char *KotaAwal, char *KotaAkhir, int Jarak);
void push(char *KotaAwal, char *KotaAkhir, int Jrk);
void pop(char *KotaAwal, char *KotaAkhir, int Jrk);
void isbus(char *KotaAwal, char *KotaAkhir);
int find(char *KotaAwal, char *AnyWhere);
int match(char *KotaAwal, char *KotaAkhir);
int main()
{
    char KotaAwal[20], KotaAkhir[20];
    setup();
    cout <<"Masukkan Perjalanannya"<<endl;
    cout <<"~~~~~~~~~~~~~~~~~~~~~~"<<endl;
    cout <<"Dari : "; cin>>KotaAwal;
    cout <<"Ke   : "; cin>>KotaAkhir;
    isbus(KotaAwal, KotaAkhir);
    route(KotaAkhir);
cin.get(); }
void setup() {
    inbus("Jakarta", "Jogyakarta", 650);
    inbus("Jakarta", "Semarang", 450);
    inbus("Jakarta", "Malang", 850);
    inbus("Jogyakarta", "Malang", 300);
    inbus("Semarang", "Surabaya", 450);
    inbus("Semarang", "Jogyakarta", 75);
    inbus("Semarang", "Banyuwangi", 750);
    inbus("Malang", "Madiun", 250);
    inbus("Malang", "Nganjuk",300);
    inbus("Malang", "Sidoarjo",30);
    }
void inbus(char *KotaAwal, char *KotaAkhir, int Jarak){
    int Jrk;
    if(buspos <MAX) {
        strcpy(bus[buspos].KotaAwal, KotaAwal);
        strcpy(bus[buspos].KotaAkhir, KotaAkhir);
        bus[buspos].Jarak = Jrk;
        bus[buspos].Skip = 0;
        buspos++; }
    else
    cout<<"Database Penuh"<<endl;
}
void isbus(char *KotaAwal, char *KotaAkhir)
{
    int d,Jarak, Jrk; //deklarasi jarak
    char AnyWhere[20]; //nama kota perantara
    if(d=match(KotaAwal, KotaAkhir)) //find hubungan lain
    {
    push(KotaAwal, KotaAkhir, d);
    return ; 
    }
    if(Jarak =find(KotaAwal, AnyWhere)) //cara hubungan lain
    {
    push(KotaAwal, KotaAkhir, Jarak);
    isbus(AnyWhere, KotaAkhir);
    }
    else
        if(Tos > 0) //Tracking
        {
        pop(KotaAwal, KotaAkhir, Jrk);
        isbus(KotaAwal, KotaAkhir);
        }
}
// menentukan jalur antar 2 kota, jika ada jalur, maka 
// tampilkan nilai panjang jarak antar kota
int match(char *KotaAwal, char *KotaAkhir)
{
    int t;
    for(t=buspos; t>-1; t--) 
    {
        if((!strcmp(bus[t].KotaAwal,KotaAwal)) && (!strcmp(bus[t].KotaAkhir,KotaAkhir)))
        return bus[t].Jarak;
    }
    return 0; 
    }
    
//Mencari jalur penghubung dari kota asal ke kota lain dari daftar lain
int find(char *KotaAwal, char *AnyWhere)
{
    char KotaAkhir[20];
    Findpos=0;
        while (Findpos < buspos) 
        {
        if((!strcmp(bus[Findpos].KotaAwal, KotaAwal)) && (!strcmp(bus[Findpos].KotaAkhir, KotaAkhir)))
        {
            strcmp(AnyWhere, bus[Findpos].KotaAkhir);
            bus[Findpos].Skip =1;
            return bus[Findpos].Jarak;
        }
        Findpos++; 
        }
    return 0;
    }
//Memasukkan node kedalam stack
void push(char *KotaAwal, char *KotaAkhir, int *Jrk)
{
    if(Tos<MAX) {
        strcpy(btstack[Tos].KotaAwal, KotaAwal);
        strcpy(btstack[Tos].KotaAkhir, KotaAkhir);
        bus[Tos].Jarak = *Jrk;
        Tos++; }
    else
    cout <<"Stack penuh !!!"<<endl;
}
//Membebaskan node dari dalam stack
void pop(char *KotaAwal, char *KotaAkhir, int *Jrk)
 { 
    if(Tos>0) 
    {
        Tos--;
        strcpy(KotaAwal, btstack[Tos].KotaAwal);
        strcpy(KotaAkhir, btstack[Tos].KotaAkhir);
        *Jrk = btstack[Tos].Jrk;
        Tos++; 
        }
    else
    cout <<"Stack kosong !!!"<<endl;
}
//Menampilkan jalur perjalan dan jarak tempuh
void route(char *KotaAkhir) {
    int Jrk, t;
    Jrk=0;
    t=0;
    while(t<Tos) {
        cout <<"Tujuan " <<btstack[t].KotaAwal<<endl;
        Jrk += btstack[t].Jrk;
        t++;
    }
    cout<<KotaAkhir<<endl;
    cout<<Jrk<<endl; }
All code in inbus function has same error, ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]. here is the error message: https://i.stack.imgur.com/MHnhf.png
 
    