我应该如何将变量传递给system()C调用?

时间:2016-08-26 17:03:12

标签: c linux

如果我想发送echo $c > 1.txt,我该如何拨打C系列电话?我能够将c发送到1.txt但是如何在C代码中发送$c(在脚本意义上)(即c中的值)?

我的代码是这样的:

void main() {
    int c =100;
    system("echo c > 1.txt");
}

我想在文件1.txt

中保存100

3 个答案:

答案 0 :(得分:2)

您应该使用sprintf()功能构建适当的命令,然后将其传递给system()来电:

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

int main() {
    int c = 100;
    char buffer[128];
    sprintf(buffer, "echo %d > 1.txt", c);
    system(buffer);
    return 0;
}

答案 1 :(得分:0)

使用fopen / fwrite / fclose是正确的。但是如果你想使用shell代码,那么下面的代码就可以了:

int main(){
    int c =100;
    char cmd_to_run[256]={'\0'};
    sprintf(cmd_to_run,"echo %d > 1.txt",c);
    system(cmd_to_run);
}

答案 2 :(得分:0)

如果您真的想使用系统调用,可以这样做 - 首先准备系统字符串:

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

int main(void) {
    char str[42];
    int c = 100;
    sprintf(str, "echo %d > 1.txt", c);
    system(str);
    return 0;
}

...但在C中使用它的方法是这样的:

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

int main(void) {
    int c = 100;
    FILE *fil;
    fil = fopen("1.txt", "wt");
    if(fil != NULL) {
        fprintf(fil, "%d", c);
        fclose(fil);
    }
    return 0;
}