以前の記事「【C/C++】コンソールの内容を全てクリアする」でも触れましたが、system()関数を利用することで、コマンドを実行することができます。
しかし、system()関数を使った場合、コンソールに表示される結果を取得することができません。
コンソールに表示される結果は、コマンドのリダイレクト機能を利用すれば取得することができます。
(他にもっと上手なやり方があるのかもしれませんが…)

以下、概念です。
 1.system()関数の引数を「コマンド > 出力ファイル名」の形式で指定する。
 2.出力したファイルを読み込む。
 3.読み込んだ内容を出力する。

今回は、リダイレクトのコマンドを実行するという部分に焦点を当てます。
リダイレクトを使用しない場合と使用する場合で確認します。
dirコマンドを使って比較します。

以下、サンプル。
《確認環境》
 ・Visual C++ 2008
 ・拡張子 … ".cpp"(C++)

《コード》
1.リダイレクトを使用しない
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
int ret;
char wait;

ret = system("dir");
if(ret != 0){
printf("Command Error\n");
}

printf("終了するには何かキーを押して下さい。\n");
scanf("%c", &wait);

return 0;
}


2.リダイレクトを使用する
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
int ret;
char wait;

ret = system("dir > c:\\test.txt");
if(ret != 0){
printf("Command Error\n");
}

printf("終了するには何かキーを押して下さい。\n");
scanf("%c", &wait);

return 0;
}

【補足事項】
・リダイレクトでフォルダパスを指定する場合には、フォルダのセパレータとなる"\"がエスケープされてしまわないように注意して下さい。