Visual Studio 2019(VS2019) だと、
>E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
と出ます。下線が引かれている E0167 をクリックすると、ネット検索されます。で、一番最初に出てきた
https://teratail.com/questions/118636
const char*とchar*の互換性 - teratail(ja)
には、
>古い C++ (いわゆる C++03) では文字列リテラルを char* に変換するのが許されていたのですが、
>後に (C++11 で) 廃止されたという経緯があります。 更に Visual Stuido はユーザへの便宜のために
>かなり後まで変換を許すように実装していたらしいです。
と、あります。VS2019 では、許さないようになったのでしょう。
参考になされた本が古いようです。
解決方法は、
#3>typedef char String[1024];
#3>を
#3>typedef const char* String;
や、元のソースをできるだけ生かすなら、
typedef const char String[1024];
でしょうか。