0

ソフトウェア パッケージをオンラインでダウンロードしました。パッケージの名前が aPackage.zip であるとします。フォルダーを解凍すると、実行可能ファイル Cassie.exe が含まれており、file1.txt と file2.txt の 2 つの入力ファイルが必要です。Cassie.exe をダブルクリックするだけで、自動的に正常に実行されます。Cassie.exe の実行にかかる時間を測定したいので、Visual C++ 2010 Express で新しいプロジェクト (TimeMeasure) の小さな C++ プログラム (main.cpp) を作成しました。ただし、Cassie.exe、file1.txt、file2.txt を同じフォルダー内に配置しても、Cassie.exe は file2.txt を開けないと文句を言い続けます。プロジェクト TimeMeasure の main.cpp のコードは次のとおりです。

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>      /* printf */
#include <time.h>       /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h>       /* sqrt */

using namespace std;

int main () {

  const clock_t begin_time = clock();
  system("C:\\aPackage\\Cassie.exe C:\\aPackage\\file1.txt C:\\aPackage\\file2.txt");

  ofstream myfile;
  myfile.open ("Time.txt");
  myfile << "Time used is %d sec \n"<<float( clock () - begin_time ) /  CLOCKS_PER_SEC;
  myfile.close();
  system("PAUSE");
  return 0;
}

TimeMeasure プロジェクトはパスに作成されます

C:\Users\Cassie\Documents\Visual Studio 2010\Projects\TimeMeasure

これが、aPackage フォルダーに絶対パスを使用する理由です。私のPCはウィンドウ7のホームOSシステムです。誰が私が間違ったことを教えてもらえますか? どうもありがとうございました、

4

1 に答える 1

0

Cassie.exeおそらく現在のディレクトリで 2 つのファイルを探します。実行可能ファイルをダブルクリックして実行すると、現在のディレクトリが実行可能ファイルと同じディレクトリに設定されるため、機能します。使用するsystem()と、現在のディレクトリ (この場合は TimeMeasure を含むディレクトリ) は変更されないため、機能しません。

_chdirを呼び出す前に現在のディレクトリを設定するために使用するsystemか、次のようなものを試してください

system("cd /d C:\\aPackage && Cassie.exe");

ダブルクリックとほぼ同じ効果があります。

于 2013-03-06T21:56:50.913 に答える