[英]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上肯定已经有一个问题。
您可以使用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)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.