假设这是我的代码:
int main() {
char *number;
system("grep total myfile > filename");
printf(number);
}
此代码从 myfile 中找到包含“total”的行并将其输出到一个名为 filename 的新文件中。我正在尝试将输出直接设置为字符“数字”,而不必从文件名中写入/读取。有没有办法做到这一点?
谢谢你的帮助!
如果我理解你的标题,你想output
从被command
执行者那里得到,
#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
,以及直接从您运行的进程中读取数据来做一些小动作。肯定会有一个关于这个的问题。
您可以使用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)。