我希望编写一个使用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
应该是用户的输入参数。他想要压缩的文件夹
答案 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;
}
留下缓冲区溢出的可能性。