我正在开发一个获取命令行参数的C程序,并向它们附加一个文件扩展名。
执行将是这样的:
>myprogram file1 file2
并将执行另一个将用作参数file1.txt
和file2.txt
的程序。
我尝试这样做会添加扩展并运行一个命令(s1是路径,s2是循环中的argv[i]
:
int getfile(char *s1, char *s2){
char *str2 = malloc(sizeof(s2)+3);
strcpy(str2,s2);
strcat(str2,".txt");
execl(s1,"program",str2,NULL);
exit(0);
}
该函数将为一个文件(>program file1.txt
和>program file2.txt
)运行程序,但我需要找到一种方法以这种方式运行它(>program file1.txt file2.txt
)。
我试图直接修改argv,但我没有成功。
有任何建议吗?
答案 0 :(得分:0)
试试这段代码:
int main(int argc, char *argv[])
{
char *buffer;
char command[512];
int i = 1;
for(i = 1; i < argc; i++){
buffer = malloc(strlen(argv[i]) + 5);
strcpy(buffer,argv[i]);
strcat(buffer,".txt");
sprintf(command,"touch %s\0",buffer);
system(command);
free(buffer);
}
return 0;
}
一个没有错误检查的简单程序,我喜欢显式添加字符串终止符。
答案 1 :(得分:0)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, int *argv[]){
if(argc==1){
printf("You have not entered anything!\n");
return 0;
}
char *arr=malloc(1000*sizeof(char));
int i;
strcat(arr, argv[0]);
strcat(arr, " ");
for(i=0;i<argc-1;i++){
strcat(arr,argv[i+1]);
strcat(arr,".txt");
strcat(arr," ");
strcat(arr,"\0");
}
printf("%s\n",arr);
free(arr);
return 0;
}