在C中使用带有文件的system()

时间:2017-12-04 21:26:31

标签: c string system tar

我希望编写一个使用system()并压缩文件夹的程序。文件夹名称通过命令行提供。这就是我所拥有的:

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

int main(int argc, char** argv){
  int i;
  char buf[64]
  char string[]="tar -cf stent.tar ";
  if(argc>1){
    for(i=1;i<argc;i++){
      string[16]=(char)argv[i];
      printf("%s",argv[i]);
    }
  }
  snprintf(buf,sizeof(buf), "tar -cf stent.tar %s," argv);
  printf(string);
  printf(buf);
  return 0;
}

基本上我希望这样做:

system("tar -cf stent.tar %s", buf);

buf应该是用户的输入参数。他想要压缩的文件夹

1 个答案:

答案 0 :(得分:4)

也许这会将文件夹名称参数传递给tar命令。但是,为什么你不能从命令行中做到这一点,这是一个谜。

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

int main(int argc, char *argv[]){
    char buf[1024];
    if(argc > 1){
        sprintf(buf, "tar -cf stent.tar %s", argv[1]);
        system(buf);
    }
    return 0;
}

留下缓冲区溢出的可能性。