2012-04-13 16 views
1

Ich versuche, ein Programm von einem anderen Programm zu starten. HierAusführen eines Programms von einem anderen Programm in C

ist der Code unter
Figur: 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; 
} 

In c: \ Rasmi Personal \ PERSONAL \ C \ Codeblock \ C_Test \ bin \ Debug \ C_Test Projekt den Code enthält, ist

Abbildung 2:

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

Aber während des ersten Programm ausführt (Figur 1) der Ausgang, wie unten kommt.

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

After Execution 

Bitte helfen Sie mir bei der Lösung dieses Problems.

PS: - Ich verwende CODE :: BLOCKS in Windows XP.

+0

@Mat: Wenn ich das gleiche tat er seinen Fehler wie „Das System nicht finden können, der angegebene Pfad. " –

+0

Ich denke, Sie müssen Escape-Zeichen für Leerzeichen verwenden, da Verzeichnisnamen Leerzeichen enthalten und der Name der Ableitung "c" sollte Groß sein –

+0

@AmolSharma Es könnte ein Problem mit den Leerzeichen sein, aber nicht mit dem Laufwerksnamen in kleinen Buchstaben. Windows ist Groß-und Kleinschreibung, wenn es um Dateinamen kommt –

Antwort

4

Sie verwenden Pfadnamen mit Leerzeichen in ihnen. Alles wird verwirrender, wenn Sie das tun, und Sie müssen Anführungszeichen um die richtigen Dinge an den richtigen Stellen hinzufügen, um alles zum Laufen zu bringen.

Ich empfehle die Verwendung von Pfadnamen ohne Leerzeichen in ihnen.

Wenn Sie immer noch versuchen wollen, diese Arbeit mit Leerzeichen in Pfadnamen zu machen, könnte folgendes es tun:

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

Vielen Dank ... Es hat funktioniert. Aber könnten Sie bitte die Antwort ein wenig ausarbeiten? Ich konnte die von Ihnen angegebene Anweisung nicht verstehen –

+2

Die Windows-Shell verwendet Leerzeichen, um den Befehl von seinen Argumenten zu trennen. Wenn Sie 'system()' verwenden, übergeben Sie eine Befehlszeile an die Shell. Die Shell sieht 'c: \ Rasmi' gefolgt von einem Leerzeichen und schließt fälschlicherweise, dass ein' c: \ Rasmi.exe' Programm vorhanden sein muss. Gibt es nicht, also erhalten Sie einen Fehler. Wenn Sie das Ganze in Anführungszeichen setzen, die an die Shell übergeben werden, sucht die Shell den gesamten Pfad, der von den Anführungszeichen umgeben ist, und führt das Programm aus. –

Verwandte Themen