C中的system()时出现分段错误

Des*_*akt 3 c terminal segmentation-fault

我想使用linux的"base64"脚本对数据进行编码并在C中获取.当我尝试编译时

char a[200];
strcpy(a, "Hello");
printf("%s", a);
Run Code Online (Sandbox Code Playgroud)

我得到了输出

Hello
Run Code Online (Sandbox Code Playgroud)

现在,每当我尝试代码

char a[200];
strcpy(a, system("echo Hello | base64"));
printf("%s", a);
Run Code Online (Sandbox Code Playgroud)

我得到了输出

aGVsbG8K
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

即使我删除了"printf"语句,我也是如此

aGVsbG8K
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

我想保存输出的值

system("echo Hello | base64")
Run Code Online (Sandbox Code Playgroud)

在'a'而不显示它.请帮忙

Chr*_*ner 6

如果您阅读文档,system您将发现它不会返回字符串 - 它被定义为:

int system(const char *command);
Run Code Online (Sandbox Code Playgroud)

返回值是命令的返回状态,如果有错误则返回-1.您无法使用输出system- 您运行的命令的输出将直接转到stdout.

要从另一个命令获得输出,您可以使用类似的东西popen.

FILE *myfile;
char buffer[1024];

myfile=popen("echo Hello | base64","r");
if(myfile)
  {
  while(fgets(buffer,1024,myfile))
    {
    printf("%s",buffer);
    }

  pclose(myfile);
  }
Run Code Online (Sandbox Code Playgroud)