我想在系统命令中访问c的变量,但我不知道该怎么做 我尝试如下,但这不起作用
#include<stdlib.h>
int main(){
int a=12;
system("echo $a");
}
答案 0 :(得分:7)
您无法通过任何类型的字符串插值来执行此操作,例如您已尝试过。您需要做的是在将命令字符串传递给system()
之前构建命令字符串。
#include <stdio.h>
#include <stdlib.h>
int main() {
int a = 12;
char command[100];
sprintf(command, "echo %d", a);
system(command);
}
答案 1 :(得分:0)
系统函数接受一个const char *参数,并根据系统返回一个整数值;通常是执行后命令的状态代码。
int system (const char* command);
因此,要从c程序中嵌入变量,您必须构建一个命令字符串,然后将其传递给system();除了如上所述使用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;
}