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'而不显示它.请帮忙
如果您阅读文档,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)