2012-04-13 79 views
1

我試圖從另一個程序啓動程序。從另一個程序執行程序C

這裏是下面
圖的代碼:1

#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; 
} 

在C:\ Rasmi個人\ PERSONAL \ 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)時,輸出如下。

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:當我做了同樣是他作爲「系統無法找到錯誤指定的路徑「。 – 2012-04-13 06:09:06

+0

我想你必須使用轉義字符作爲空格,因爲目錄名稱包含空格,並且派生名稱「c」應該是大寫 – 2012-04-13 06:16:23

+0

@AmolSharma這可能是空格問題,但不是驅動器名稱是小寫字母。當涉及到文件名時,WIndows不區分大小寫 – 2012-04-13 06:17:46

回答

4

您正在使用其中包含空格的路徑名。當你這樣做的時候,一切都變得更加令人困惑,而且你必須在正確的地方添加引號,才能使任何東西起作用。

我推薦使用不含空格的路徑名。

如果你還是想盡量讓用空格這項工作在你的路徑名,以下可能做到這一點:

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

非常感謝...它確實有效。但是,您能否詳細說明您的答案?我無法理解您提供的聲明 – 2012-04-13 06:26:10

+2

Windows shell使用空格將命令與其參數分隔開。當你使用'system()'時,你傳遞一個命令行到shell。 shell看到'c:\ Rasmi'後面跟着一個空格,並錯誤地得出結論:必須有一個'c:\ Rasmi.exe'程序。沒有,所以你得到一個錯誤。當您將整個事件放入傳遞給shell的引號中時,shell會查看引號包圍的整個路徑,然後運行該程序。 – 2012-04-13 06:29:55