1

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

执行将是这样的: >myprogram file1 file2 并将执行另一个程序,该程序将用作参数file1.txtfile2.txt. 我尝试这样做会添加扩展名并运行一个命令(s1 是路径,s2argv[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,但没有成功。

有什么建议吗?

4

2 回答 2

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;
}

一个没有错误检查的简单程序,我喜欢显式添加字符串终止符。

于 2012-10-29T06:05:01.437 回答
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; 

}
于 2014-05-18T16:55:24.993 回答