在C语言中使用system()和agument

在C语言中使用system()和agument,c,string,system,tar,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++){ stri

我想写一个使用
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;
}

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

这可能会将文件夹名称参数传递给
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;
}
#包括
#包括
int main(int argc,char*argv[]){
char-buf[1024];
如果(argc>1){
sprintf(buf,“tar-cf支架.tar%s”,argv[1]);
系统(buf);
}
返回0;
}

排除缓冲区溢出的可能性。

这可能会将文件夹名参数传递给
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;
}
#包括
#包括
int main(int argc,char*argv[]){
char-buf[1024];
如果(argc>1){
sprintf(buf,“tar-cf支架.tar%s”,argv[1]);
系统(buf);
}
返回0;
}

排除缓冲区溢出的可能性。

是否要将所有参数传递给命令?目前只有一个参数。稍后,我将在两个stringsTry中拆分argv中的两个参数,通过使用来解决这个问题。您想将所有参数传递给您的命令吗?现在只有一个参数。稍后,我将在argv中用two stringsTry拆分两个参数,通过使用我需要在程序中执行此操作来解决此问题,稍后,我将获取压缩的tar并通过网络将其发送到另一个程序。但是感谢alotI需要在程序中执行它,稍后我将获取压缩的tar并通过网络将其发送到另一个程序。但是非常感谢