1

コマンドライン引数を取得してファイル拡張子を追加するCプログラムに取り組んでいます。

実行は次のようになります: >myprogram file1 file2 and は、引数として使用する別のプログラムを実行しますfile1.txtand file2.txt. 拡張機能を追加して1つのコマンドを実行しようとしました(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); 
}

関数は 1 つのファイルに対してプログラムを実行しますが (>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 に答える