繁体   English   中英

如何使用C编程将UNIX命令的输出存储到char中

[英]How to store an output from a UNIX command into a char with in C programming

假设这是我的代码:

int main() {
    char *number;
    system("grep total myfile > filename");

    printf(number);
}

此代码从myfile中找到包含“ total”的行,并将其输出到名为filename的新文件中。 我试图直接将输出设置为char“ number”,而不是必须从文件名写入/读取。 有没有办法做到这一点?

谢谢你的帮助!

如果我理解您的标题,那么您希望从执行的command获取output

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

int main()  {
    char number[100];
    FILE *f = popen("echo 200", "r");
    while (fgets(number, 100, f) != NULL) {
        printf( "%s\n", number );
    }
    pclose(f);

    return 0;
}

还是只是想将变量传递到命令中并输出变量

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

int main()  {
    int n = 100;
    char buf[100];
    sprintf(buf, "echo %d > filename", n); // format the command
    system(buf);                           // execute
    printf("%d\n", n);                     // print the variable

    return 0;
}

由于您正在编写文件,所以最简单的方法是打开并读取文件。 您可以这样做:

char number[100];
FILE *fp;

system( "echo 200 > filename" );
fp = fopen( "filename", "r" );
if( fp != NULL ) {
    if( fgets(number, 100, fp) != NULL ) {
        printf( "%s\n", number );
    }
    fclose(fp);
}

如果您不想写入/读取文件,则可以在分支过程,打开管道和使用exec以及从运行的过程中直接读取数据方面做些什么。 SO上肯定已经有一个问题。

如果我正确理解了您的意思,那不是走的路。

看一下pipedup2

您可以使用popen启动子流程

FILE *fp = popen("echo 200", "r");
if (fp != NULL) {
    char number[20];
    if (fgets(number, sizeof(number), fp))
        printf("%s\n", number);

    pclose(fp);
}

使用sprintf()函数预先创建具有必要编号的字符串,然后只需调用system(your_string)。

sprintf()示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM