在 C 中使用带参数的 system()
Using system() in C with an agument
我想编写一个使用 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
应该是用户的输入参数。他要压缩的文件夹
也许这会将文件夹名称参数传递给 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;
}
排除缓冲区溢出的可能性。
我想编写一个使用 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
应该是用户的输入参数。他要压缩的文件夹
也许这会将文件夹名称参数传递给 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;
}
排除缓冲区溢出的可能性。