2014-04-23 100 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; 
}