在系统命令中访问c变量

ffvjumwh  于 2022-12-03  发布在  其他
关注(0)|答案(2)|浏览(99)

我想在系统命令中访问c的变量,但我不知道如何做,我尝试了如下,但这不起作用

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

mwkjh3gx1#

你不能通过任何类型的字符串插值来实现这一点。你需要做的是在将命令字符串传递给system()之前构建它。

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

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

daolsyd02#

system函数接受一个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;
}

相关问题