用字符串连接argv的每个值

时间:2012-10-29 05:48:22

标签: c concatenation argv

我正在开发一个获取命令行参数的C程序,并向它们附加一个文件扩展名。

执行将是这样的: >myprogram file1 file2 并将执行另一个将用作参数file1.txtfile2.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,但我没有成功。

有任何建议吗?

2 个答案:

答案 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; 

}