2012-04-13 13 views
1

別のプログラムからプログラムを起動しようとしています。 C言語で1Cの別のプログラムからプログラムを実行

#include<stdio.h> 
#include<stdlib.h> 
#include<conio.h> 
#include<string.h> 
int main() 
{ 
    printf("Before Execution \n"); 
    system("c:\\Rasmi Personal\\PERSONAL\\C\\Code Block\\C_Test\\bin\\Debug\\C_Test.exe"); 
    printf("\nAfter Execution \n"); 
    return 0; 
} 

:ここ


図以下のコードで\ Rasmiパーソナル\個人\ C \コードブロック\ C_Test \ binに\デバッグ\ C_Testプロジェクトは、コードが

で含まれてい

図2:

#include <stdio.h> 
int main() 
{ 
    int x = 10; 
    while(x --> 0) // x goes to 0 
    { 
     printf("%d\n", x); 
    } return 0; 
} 

しかし、第1プログラム(図1)を実行している間、出力は以下のようになります。

Before Execution 
'c:\Rasmi' is not recognized as an internal or external command, 
operable program or batch file. 

After Execution 

この問題を解決するのに手伝ってください。

PS: - 私はWindows XPでCODE :: BLOCKSを使用しています。

+0

@Mat:私は同じことをやったとき、それシステム」としての彼のエラーは見つけることができませんパスが指定されました。 –

+0

ディレクトリ名にスペースが含まれていて、名前 "c"が大文字である必要があるので、スペース文字としてエスケープ文字を使用する必要があると思います。 –

+0

@AmolSharmaスペースに問題はあるかもしれませんが、ドライブ名は小文字ではありません。ファイル名には大文字と小文字は区別されません –

答えて

4

パス名にスペースを使用しています。あなたがそれをするときにはすべてがもっと混乱し、何かを稼働させるために正しい場所に適切なものを引用符で追加する必要があります。

パス名をスペースなしで使用することをお勧めします。

あなたはまだパス名にスペースでこの仕事をするために試してみたい場合は、次のようにそれを行う可能性があります:

system("\"c:\\Rasmi Personal\\PERSONAL\\C\\Code Block\\C_Test\\bin\\Debug\\C_Test.exe\""); 
+0

ありがとうございます...それは働いた。しかし、あなたの答えをちょっと凝ってください。 –

+2

Windowsシェルは、コマンドを引数から区切るためにスペースを使用しています。 'system()'を使うと、シェルにコマンドラインを渡しています。シェルは、 'c:\ Rasmi'の後ろに空白が続くのを見て、' c:\ Rasmi.exe'プログラムが必要であると誤って判断します。そうではありませんので、あなたはエラーが発生します。すべてをシェルに渡す引用符で囲むと、シェルは引用符で囲まれたパス全体を調べ、そのプログラムを実行します。 –

関連する問題