2014-04-23 142 views
2

我要訪問的C變量系統命令,但我不知道該怎麼辦呢 我試圖像下面但這並不適用訪問C變量

#include<stdlib.h> 
int main(){ 
int a=12; 
system("echo $a"); 
} 

回答

7

你不能這樣做這通過任何類型的字符串插值,如你已經嘗試過。你需要做的是在將它傳遞給system()之前構建命令字符串。

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

int main() { 
    int a = 12; 
    char command[100]; 
    sprintf(command, "echo %d", a); 
    system(command); 
} 
0

的系統函數採用一個const char *參數,並返回取決於系統的整數值;通常是執行後的命令的狀態碼。

int system (const char* command);

所以嵌入在C程序中的變量,你就必須建立一個命令字符串,然後把它傳遞給系統();除了使用上面建議的sprintf()之外,您還可以使用字符串函數,例如strcat()以及從C變量中構建複雜的命令。例如

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

int main() 
{ 
    int a = 12; 
    char command[] = "ls"; 
    char opt[] = " -l"; 
    char cmd[50]; 
    strcat(command, opt); 

    sprintf(cmd, " | head -n %d", a); 

    strcat(command, cmd); 
    printf("%s\n", command); 
    int rv = system(command); 
    printf("Return value : %d\n", rv); 

    return 0; 
}