★回答者 No.3 です。回答者 No.2 さんの指摘ありがとう。
●修正した正しい指摘です。
・間違い
memset( env_name_make, '\0', sizeof(STR_MAX+1) );
memset( env_name_del, '\0', sizeof(STR_MAX+1) );
memset( path, '\0', sizeof(PATH_MAX+1) );
・正しい(タイプ1)
memset( env_name_make, '\0', sizeof(env_name_make) );
memset( env_name_del, '\0', sizeof(env_name_del) );
memset( path, '\0', sizeof(path) );
・正しい(タイプ2)
memset( env_name_make, '\0', STR_MAX );
memset( env_name_del, '\0', STR_MAX );
memset( path, '\0', PATH_MAX );
・正しい(タイプ3)
char env_name_make[ STR_MAX + 1 ] = { 0 };
char env_name_del[ STR_MAX + 1 ] = { 0 };
char path[ PATH_MAX + 1 ] = { 0 };
と宣言すると『memset』関数を使わなくても初期化します。→回答者 No.2 さんと同じ。
※正しく動作させるには、上記のタイプ1~タイプ3のどれかを記述します。
また、『sizeof』演算子はバッファなどのサイズを求めるため『定数』を指定すると
整数のバイト数になります。→int型が16ビット環境なら 2バイト、32ビット環境なら 4
バイトが返されます。よって、sizeof(STR_MAX+1) ではなく sizeof(env_name_make) です。
●追記アドバイス
・『strcat』より、『strcpy』関数を使うと初期化する必要はありませんよ。
お礼
追記アドバイスありがとうございます。 ライブラリ関数作成等、 実施したい内容を具現化するのはなかなか難しそうですね。 質問するにしても知識不足な為、自己調査を行った後、 実施内容を具体的に明示できるようにしたいと考えます。 レジストリ操作は難しそうですね…学習したいと思います。 また新たに質問を投稿するかと思いますが、 その際はまたご回答頂けると幸いです。 Oh-Orangeさんをはじめご回答頂いた皆様ありがとうございました。