2017-04-14 8 views
-4

私は基本的に2つのファイル(.palと.dicファイル)を受信し、ソリューションファイル(blabla.sol)と呼ばれるファイルを出力するプログラムを作っている。ただし、そのソリューションファイルの名前は、プログラムが受け取ったファイルの1つに依存します。受信したファイル名の名前に応じて、出力ファイルの名前を変更するためにプログラムを変更するにはどうすればよいですか?この場合、私はそれを私のname_palファイルと同じ名前にします。 (それは、それだけで固定された名前のファイルが出力されるよう、今)ここでファイル名をdinamicallyコードを書く - C

は、私はすでに書いたプログラムです:

int main(int argc, char *argv[]) 
    { 
     char name_dic[MAX_FILENAME_SIZE]; 
     char name_pal[MAX_FILENAME_SIZE]; 
     char name_sol[] = "prob0.sol"; 

     char words_dic[MAX_WORD_SIZE]; 
     char words_pal[MAX_WORD_SIZE]; 
     char word_same_size[MAX_WORD_SIZE]; 

     char dic_total[MAX_DIC_SIZE][MAX_WORD_SIZE]; 
     char pal_total[MAX_PAL_SIZE][MAX_WORD_SIZE]; 

     FILE *dic, *pal, *sol; 

     if (argc < 3) 
     { 
      printf("Missing files.\n"); 
      exit(1); 
     } 

     strcpy(name_dic, argv[1]); 
     strcpy(name_pal, argv[2]); 

     dic = fopen(name_dic, "r"); 
     if (dic == NULL)    
     { 
     printf("Can not open dictionary file: %s\n", name_dic); 
     exit(1); 
     } 

     pal = fopen(name_pal, "r"); 
     if (pal == NULL) 
     { 
      printf("Can not open problem file: %s\n", name_pal); 
      exit(1); 
     } 

     sol = fopen(name_sol, "w"); 
     if (sol == NULL) 
     { 
      printf("Can not open solution file: %s\n", name_sol); 
      exit(1); 
     } 
     /* rest of the code */ 
+0

'char name_sol [] =" prob0.sol ";'静的に定義しないでください。名前を付けるためのロジックをここに置いてください。 –

+0

また、ユーザーにファイル名を問い合わせて、それをchar配列に割り当てることができます。 –

+0

ファイル名として考えないでください。構築したい文字列として考えてください。どのように1つの文字列(ソースファイル名になる)を別のファイルシステムに変換するのですか?おそらく最後の 'を探して。'拡張子を削除するためにファイル名を切り取り、必要な新しい拡張子を追加します。文字列を取得したら、ファイル名として使用できます。 – user3486184

答えて

0

あなたがで切り捨て関数を記述することができます「」下のスニペットに示すようにsolを追加します。

 char name_sol[MAX_FILENAME_SIZE]; 

     int i; 
     for(i=0;i<MAX_FILENAME_SIZE;i++){ 
       name_sol[i]=name_pal[i]; 
       if(name_sol[i]=='.') break; 
     } 
     strcpy(name_sol+i+1,"sol"); 
     printf("%s\n",name_sol); 
関連する問題