2016-05-12 8 views
0

ユーザーが指定したフォルダ内にファイルと同様にファイルを作成するにはどうすればよいですか?Cユーザーが指定したファイルとフォルダを作成する

これは私の機能の一部です:どちらか一方

char* folder = *(argv + 2); //"C:\\Users\\User\\Desktop\\New folder"; 
if (!(log = fopen("folder\\file.txt", "a")))// checking if there is any problem with the file 
    { 
     printf("The log file has not created correctly, closing the program\n"); 
     system("PAUSE"); 
     exit(1); 
    } 
+0

あなたはファイル操作に文字列変数を渡すことができます。文字列にパスとファイル名を作成し、それをファイル呼び出しに渡します。 –

+0

@johnelemans OPはC言語になっているので、 "strings"はありません – BackDoorNoBaby

+0

@ ariel20どのようにディレクトリがあなたから渡されていますか?それは 'char *'ですか? – BackDoorNoBaby

答えて

1

私はあなたの質問を理解していないか、それはあまりにも簡単です。あまりにも単純だとしましょう。

char filename[1024]; 
FILE *logfp; 
sprintf(filename, "%s\\file.txt", argv[2]); 
if ((logfp=fopen(filename,"w")==NULL) { 
    //...error etc. 

注:これはパス内のすべてのディレクトリが存在することを前提としています。

+0

ユーザ入力を扱うときには、本当に*** snprintf()を使うべきです! – alk

1

引数にコマンドを渡す方法が不明です。これは、ユーザーが作成するファイルへのパスである引数を1つだけ入力することを前提としています。

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

int main(int argc,char* argv[]) 
{ 
     char string[100]={'\0'}; 
     FILE* fp; 
     if(argc==2) 
      snprintf(string,(size_t)100,"%s\\filename",argv[1]); 
     else{ 
      printf("Usage : .\\executable_name \"path\""); 
      exit(-1); 
     } 
     fp=fopen(string,"a"); # Opening file in append mode. 
     if (fp==NULL){ 
       printf("Can't create file"); 
       exit(-1); 
     } 
     else{ 
       fprintf(fp,"%s","teststring\n"); 
     } 
     fclose(fp); 
     return 0; 
} 

ランのように、この1:

.\executable_name "C:\Users\SomeUser" 
+0

ユーザ入力を扱う際には、本当に*** snprintf()を使うべきです! – alk

+0

@alk:組み込み:D。ちなみに、私はまだWindowsでフォルダの深さに妥当な文字制限があるのだろうかと思っていますか? – sjsam

+1

一般に、私はWindows上で 'MAX_PATH'に行き、UNIX上では' PATH_MAX'に行くつもりですが、後者は、異なるIXのOSの性質によって移植性を保つために複雑になることがあります。このhttp://stackoverflow.com/q/833291/694576の理由を読んでみてください。最大パス長とファイル名の最大長の微妙な違いにも注意してください。 – alk

関連する問題