プロが教える店舗&オフィスのセキュリティ対策術

windows c++ でsystem関数を使い任意の実行ファイルを動かそうとしてもうまくいきません。
エラーはcharからintにイニシャライズできません
となります。また実行ファイルにスペースがあったら不味いのでしょうか。

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int=system("C:/Documents and Settings/shun/My Documents/aaa/project abc1/Debug/project abc1.exe");

return 0;
}

A 回答 (5件)

int の扱いは、既に回答があるとおりです。


また、system() 関数は、引数を単純に cmd.exe に渡すだけでして、スペースはまずいです。このばあい、" でくくる必要があります。また、Windows だと、ディレクトリの区切りが / であるのもまずいでしょう。
(純粋にファイルを扱う場合は、/ も使えます)

system("\"C:\\Documents and Settings\\shun\\My Documents\\aaa\\project abc1\\Debug\\project abc1.exe\"");

です。
    • good
    • 2

#4の方が回答されている通り、おそらく二重引用符で括る必要があると思います。

(十中八九間違いないですが、私が知らない処理系の動作まではわかりませんので...)

ディレクトリの区切りの / に関しては、Windowsであっても、CygwinとかならそれでOKです。

system関数の動作は、完全に処理系に依存しますので、具体的にどんな処理系を使っているかを書きましょう。
    • good
    • 0
この回答へのお礼

皆様本当にありがとうございます。
おかげさまで助かりました。

お礼日時:2006/02/17 01:44

その""で囲まれた部分を実際にコマンドプロンプトで入れてみよう


多分正しく動かないから。
で、どうすれば動くか工夫しよう。
それから、プログラム上で再現しよう。
    • good
    • 2

とりあえず"int="になってるのは確実に文法違反。

"int"は予約語だから変数名に使えないし、そもそも宣言されてないし。

値を受け取っても使わないなら素直に破棄したらどうですか。
あえて受け取りたいなら"int=system..."でなく"int tmp=system..."といったように書くべき。
    • good
    • 0

少なくとも、



> int=system("...

ではダメです。
宣言したいのなら、オブジェクト名を書いてください。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。
int を消して
system("C:/Documents and Settings/shun/My Documents/aaa/project abc1/Debug/project abc1.exe")
のみで実行したところコマンドプロンプトで
'C:/Documents' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とでてしまい、実行されません。これはどうしてなのでしょうか?

お礼日時:2006/02/14 21:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A