2011-07-28 38 views
-3
#include<stdio.h> 
#include<stdlib.h> 
main() 
{ 
    int i; 
    char commandBuffer[3][10]={"ls -l","ll","top"}; 
    for(i=0 ; i<1 ; i++) 
    { 
     system("> gksudo cd /home/phoenix | command[i]"); 
     system("\n"); 
     printf("%d\n",i); 
    } 
    printf("The end\n"); 
} 

我有,我想動態運行使用system()但這裏出現的問題是,包含在command[i]字符串是不被視爲一個輸入滾邊用命令的程序...但是這工作正常,如果我手動輸入每個命令的如system("> gksudo cd /home/phoenix | ls -l");如何使用字符串緩衝區動態地管理命令?

+1

請在點擊提交之前預覽您的問題。這可以清理一下。這可能會讓人們更高興地回答它。 – Joe

+0

嘗試添加更好的標題;) – Peter

+1

是的,我的第一個想法是回答「不」。 :) –

回答

1

system("> gksudo cd /home/phoenix | command[i]");

這裏的「命令[I]」被認爲是一個字符串。所以command[i]的值是而不是被取代。你需要的是這樣的:在這裏

char cmd_buff[MAX_BUF]; 

strcpy (cmd_buff, "> gksudo cd /home/phoenix |"); 
strcat (cmd_buff, command[i]); 

注意,command[i]不是雙引號。請閱讀C中的字符串常量和標識符來理解這一點。

+0

非常感謝,我修改了你所建議的代碼...... str只是爲了測試一個功能,並不需要這樣的... – phoenix

+1

是的,但你有一個基本的錯誤,你試圖使用變量標識符'command'內的一個字符串,比如「run command」,所以'command'標識的變量的內容在第一種情況下不會被替換,並且會保持原樣,但在下一種情況下它將被替換。請確保你瞭解這個基本的東西。 – phoxis