C++ レガシープログラミング Vol. 4

前回のプログラムに少し改造を加えます。

f:id:msec:20220222194313p:plain

コード6

先ず、コンソールから1行の文字列を読み込む関数、gets_s を追加します。この関数は引数に、読み込んだ文字列を格納するバッファを指すポインタ変数と読み込む文字列のサイズを指定します。バッファは char buf[21]; で21バイトの char 配列を宣言しています。C++の文字列は ’¥0’ で表わされるヌル文字を末尾に持つので必要な文字サイズ+1のバッファが必要です。gets_s は1行読み込みなので、コンソールで何か文字列を打って、最後にエンターキーを押すと関数の実行が終わります。

f:id:msec:20220222195125p:plain

コード7

次のコードは、先ほどの gets_s を無限ループ内に入れて、何行も続けて読み込むようにしたものです。コンソールで文字列入力してエンターを押すと gets_s 関数の呼び出しが終わって、buf に文字列が読み込まれます。次の行で printf でバッファの中身をコンソールに書き出します。前半の main 関数の引数の値を書き出す部分はもう必要ないので、削除しました。while(1) は繰り返し命令で、() 内が false ( =0 )になるで繰り返すという命令ですが、(1) だと永遠に false にならないので、無限に繰り返されるループです。そのままだと、強制終了するしかなくなるので、strcmp を使って文字列が "end" と一致したらループを抜けるようにしています。

main 関数の最初に準備をして(ここでは バッファ char buf[21] を作って)無限ループに入り、終了条件に一致したらループを抜けて main 関数が終わるというのがPCアプリの最も基本的なスタイルです。

では、Visual Studio のテンプレートを使って、画面のあるアプリを作って仕組みを見てみましょう。

Visual Studio を起動しなおして、新しいプロジェクトの作成を指定します

f:id:msec:20220222200355p:plain

プロジェクト2


 今度は Windows デスクトップウィザードを選びます

f:id:msec:20220222200534p:plain

ウイザード

作成を押します

f:id:msec:20220222200634p:plain

作成

アプリケーションの種類で「デスクトップアプリケーション(.exe)」を指定します

f:id:msec:20220222200809p:plain

アプリ

OKを押すと以下のようなコードが生成されます

f:id:msec:20220222200855p:plain

コード7

実行すると以下のようなウィンドウが表示されます

f:id:msec:20220222200942p:plain

実行2

次回、このソースを少し説明して、アプリの作成に取り掛かります